Informations détaillées sur le plan de travail

Le plan de travail offre un ensemble extensif de classes et d'interfaces pour la génération d'interfaces utilisateur complexes. Heureusement, vous n'avez pas besoin de toutes les connaître pour réaliser une génération 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.

Plan de travail avec trois vues et un éditeur dans une page

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êtres du plan de travail. Toutefois, chacune d'elles constitue un univers autonome de vues et d'éditeurs, aussi nous attacherons-nous à une seule fenêtre.

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 verrez une page (IWorkbenchPage) composée de parties. 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.

Perspectives

Les perspectives fournissent une couche supplémentaire d'organisation dans la page du plan de travail.  Une perspective définit une collection de vues appropriées, une présentation pour ces dernières et les actions applicables à une tâche utilisateur donnée.  Les utilisateurs peuvent basculer d'une perspective à l'autre tout comme ils passent de tâche en tâche.   Du point de vue de l'implémentation, la perspective active de l'utilisateur contrôle les vues affichées sur la page du plan de travail ainsi que la position et la taille de ces vues. Les éditeurs ne sont pas affectés par la modification d'une perspective.

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-in 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. Observons-la à nouveau maintenant que nous en savons plus sur ce qu'il 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() {
         // activation de mon widget. Ceci ne présente pas vraiment
         // d'intérêt pour un intitulé. Pour des ensembles plus complexes de widgets
         // vous pouvez décider lequel activer.
      }
   }

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().

Copyright IBM Corporation and others 2000, 2003.