De workbenchstructuur

De workbench biedt een uitgebreide set met klassen en interfaces voor het bouwen van complexe gebruikersinterfaces. U hoeft hier echter geen kennis van te hebben voor het uitvoeren van een eenvoudige taak. Eerst worden enkele concepten en de bijbehorende onderliggende technologieën uitgelegd die in de gebruikersinterface van de workbench voorkomen.

Workbench

De term workbench is in feite "het venster dat wordt geopend bij het starten van het platform". Nu wordt iets dieper ingegaan op de visuele onderdelen waaruit de workbench is opgebouwd.

Workbench met drie views en één editor op een pagina

Hierna wordt het workbenchvenster (IWorkbenchWindow) bedoeld met "workbench". Het workbenchvenster is het bovenste venster van de workbench. Het venster fungeert als frame voor de menubalk, werkbalk, statusbalk, snelkoppelingenbalk en pagina's. Doorgaans hoeft u het workbenchvenster niet te programmeren, maar het is wel handig om van het bestaan van het venster op de hoogte te zijn.

Opmerking: U kunt meerdere workbenchvensters openen. Omdat elk venster een afzonderlijke omgeving met editors en views is, wordt in dit document uitgegaan van één workbenchvenster.

De werkomgeving voor de gebruiker bestaat uit views en editors. Er zijn nog enkele andere klassen waarmee het workbenchvenster wordt geïmplementeerd.

Pagina

In het workbenchvenster wordt één pagina afgebeeld (IWorkbenchPage) die zelf ook onderdelen bevat. Pagina's zijn een implementatiemethode voor het groeperen van onderdelen. Meestal hoeft u pagina's niet te programmeren, maar u krijgt er wel te maken tijdens het schrijven van programmacode en het opsporen van fouten.

Perspectieven

Perspectieven vormen een aanvullende organisatielaag voor de workbenchpagina. Een perspectief omvat een verzameling bij elkaar behorende views, de indeling van die views en acties voor een bepaalde taak van de gebruiker. U kunt tijdens het uitvoeren van taken naar andere perspectieven overschakelen. Voor de implementatie geldt dat op basis van het actieve perspectief wordt bepaald welke views worden afgebeeld op de workbenchpagina en wat de posities en afmetingen zijn van de views. Editors kunnen niet worden beïnvloed door een ander perspectief te kiezen.

Views en editors

Views en editors laten u kennis maken met veelgebruikte taken omtrent het programmeren van plugins. Wanneer u een visueel onderdeel aan de workbench toevoegt, moet u bepalen of u een view of een editor wilt implementeren. Hoe kunt u dit bepalen?

In beide gevallen hanteert u een gangbare werkwijze voor het gebruik van views en editors.

Tijdens het werken met views en editors treden events op in de bijbehorende workbenchpagina, zodat kan worden gereageerd op het openen, activeren, deactiveren en sluiten van de views en editors.

Wat kenmerkend is aan views en editors, is het gebruiksgemak ervan. In feite zijn views en editors houders van widgets en kunt u de complexiteit ervan zelf bepalen. Een zeer eenvoudige view is de begroeting, die in een eerder onderwerp aan bod is gekomen. Hieronder volgt het voorbeeld opnieuw:

   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("Hallo wereld");
      }
      public void setFocus() {
         // De widget de focus geven. Dit heeft geen zin voor een
         // label, maar komt van pas zodra u in een complexe verzameling
         // met widgets moet besluiten welke widget de focus krijgt.
      }
   }

Het implementeren van de methode dispose() is in dit voorbeeld niet nodig, omdat met de methode createPartControl(parent) alleen een label is gemaakt. Indien gebruikersinterface-resources (zoals afbeeldingen of lettertypen) waren toegekend, hadden deze ontkoppeld moeten worden. Omdat de klasse ViewPart werd uitgebreid, is de implementatie "geen actie ondernemen" van dispose() overgenomen.