Informations détaillées sur le plan de travail

Un jeu de classes et d'interfaces extensif est disponible pour générer des interfaces utilisateur complexes. Heureusement, vous n'avez pas besoin de toutes les connaître pour réaliser quelque chose de simple. Nous allons commencer par observer certains concepts exposés dans l'interface utilisateur du plan de travail et leur structure.

Plan de travail

Nous avons librement utilisé le terme plan de travail pour faire référence à la fenêtre qui s'ouvre lorsque vous démarrez la plateforme. Creusons un peu et examinons certains des composants visuels qui constituent le plan de travail.

Pour le reste de cette discussion, lorsque nous utiliserons le terme "plan de travail", nous ferons référence à la fenêtre du plan de travail (IWorkbenchWindow). La fenêtre du plan de travail est la fenêtre du niveau supérieur dans un plan de travail. Il s'agit du cadre contenant la barre de menus, la barre d'outils, la ligne d'état, la barre de raccourcis et les pages. En règle générale, vous ne devez pas programmer pour la fenêtre du plan de travail. Vous voulez juste savoir qu'elle existe.

Remarque : Vous pouvez ouvrir plusieurs fenêtre de plan de travail à l'aide du menu Perspective->Ouvrir. Par défaut, les nouvelles perspectives sont ouvertes dans la même fenêtre du plan de travail. D'autres options sont disponibles (pour plus de détails, reportez-vous à la page des préférences du plan de travail). Chaque fenêtre du plan de travail est un monde autonome d'éditeurs et de vues, aussi ne nous attacherons-nous qu'à une seule fenêtre du plan de travail.

Du point de vue de l'utilisateur, un plan de travail contient des vues et des éditeurs. Il existe quelques autres classes utilisées pour implémenter la fenêtre du plan de travail. 

Page

Dans la fenêtre du plan de travail, vous pouvez trouver une ou plusieurs pages (IWorkbenchPage) qui contiennent des parties (ou sections). Les pages sont un mécanisme d'implémentation destiné à regrouper ces parties. En règle générale, vous n'avez pas à effectuer de programmation dans la page, mais vous la verrez dans le contexte de programmation et de débogage.

Remarque : Les pages sont utilisées dans l'implémentation des perspectives. Elles permettent aux parties du plan de travail d'être placées dans un conteneur externe sans s'occuper du fait que la perspective soit ouverte dans la même fenêtre du plan de travail ou dans une nouvelle fenêtre du plan de travail.

Vues et éditeurs

Les vues et les éditeurs représentent l'endroit où nous passons des détails d'implémentation à la programmation de plug-ins courants. Lorsque vous ajoutez un composant visuel au plan de travail, vous devez décider si vous souhaitez implémenter une vue ou un éditeur. Comment devez-vous choisir ?

Dans l'un ou l'autre cas, vous générez une vue ou un éditeur selon un cycle de vie commun.

Tout au long de ce cycle de vie, des événements sont émis à partir de la page du plan de travail pour notifier les parties intéressées de l'ouverture, de l'activation, de la désactivation et de la fermeture des vues et des éditeurs.

Cela semble simple ! Cela peut l'être. C'est la magie des vues et des éditeurs du plan de travail. Ce ne sont que des collecteurs de widget, qui peuvent être aussi simples ou aussi compliqués que vous le souhaitez. Nous avons abordé précédemment la plus simple des vues lorsque nous avons généré la vue Hello World. La voici de nouveau, maintenant que nous avons expliqué un peu mieux ce qui se passe.

package org.eclipse.examples.helloworld;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;

import org.eclipse.ui.part.ViewPart;



public class HelloWorldView extends ViewPart {
    Label label;
    public HelloWorldView() {
    }
    public void createPartControl(Composite parent) {
        label = new Label(parent, SWT.WRAP);
        label.setText("Hello World");
    }
    public void setFocus() {
        // set focus to my widget.  For a label, this doesn't
        // make much sense, but for more complex sets of widgets
        // you would decide which one gets the focus.
    }

}

Notez que nous n'avons pas eu à implémenter de méthode dispose() du fait que nous n'avons rien fait d'autre que de créer un libellé dans la méthode createPartControl(parent). Si nous avions affecté des ressources de l'interface utilisateur, telles que des images ou des polices, nous les supprimerions ici. Comme nous avons étendu la classe ViewPart, nous héritons de l'implémentation de "do nothing" (pas d'action requise) de la méthode dispose().