org.eclipse.ui.menus

Uitsluiting van garanties: Het extensiepunt org.eclipse.ui.menus in eclipse 3.2 is slechts gedeeltelijk geïmplementeerd. Het biedt op dit moment geen ondersteuning voor menu- of werkbalkdefinities of extensies (hiervoor moeten de bestaande contributie-extensies worden gebruikt). Het is echter het enige mechanisme waarmee 'trim'-widgets aan de workbench kunnen worden toegevoegd. In deze sectie wordt besproken hoe u dat doet.

Een 'trim'-widget is een vensteronderdeel dat op een plek (het 'trimgebied') aan de rand van het workbenchvenster wordt geplaatst. Het bekendste voorbeeld is de statusregel die in de meeste gebruikersinterfaces onder aan het venster wordt weergegeven. Door middel van het extensiepunt org.eclipse.ui.menus kunt u met plugins views toevoegen aan de workbench. Trims moeten door de plugin worden geregistreerd in het bestand plugin.xml van de plugin met   configuratiegegevens over de trim, zoals de implementatieklasse, de trimgroep (trimbalk) waarin deze zich bevindt en layoutinformatie, bijvoorbeeld of de trim 'extra' ruimte nodig heeft tijdens de layout in het trimgebied.

De interface voor aanvullende trim is gedefinieerd in IWorkbenchWidget, maar de klasse AbstractWorkbenchTrimWidget kan door plugins worden uitgebreid (dit wordt zelfs aanbevolen), zodat geen volledig nieuwe interface hoeft te worden gemaakt.

Voor het readmetool-voorbeeld gebruiken we een simpele trimwidget waarmee een reeks wordt weergegeven en die aangeeft aan welke zijde de trim wordt gekoppeld.

Laten we eens kijken naar de definitie van het extensiepunt dat wordt gebruikt voor het toevoegen van deze trim:

Het eerste gedeelte van de extensie (de 'group'-definitie) definieert het ID van de groep en definieert als 'location' voor de groep het begin van de groep 'status' (dat wil zeggen het begin van het onderste trimgebied). Het tweede gedeelte (de 'widget'-definitie) definieert de implementatieklasse van de widget en definieert de locatie van de widget als de vorige gedefinieerde groep.

In beide gevallen wordt het type van de balk gedefinieerd als trim (het enige type dat op dit moment wordt ondersteund).

Als u het readmetool-voorbeeld hebt geïnstalleerd, kijkt u naar de implementatie van de methode ReadmeTrimWidget's fill. Deze wijkt af van de andere fill-methoden die worden gebruikt bij het toevoegen van widgets aan werkbalken of menu's. Dat komt omdat trim van het ene gebied naar het andere kan worden versleept waarbij ook de 'zijde' wordt gepasseerd waar de trim wordt geplaatst, zodat de implementor de weergave van de widget kan aanpassen aan de locatie door bijvoorbeeld de richting (horizontaal of verticaal) te veranderen. De huidige implementatie verandert de weergegeven tekst in overeenstemming met de huidige locatie. Let ook op de wijze waarop de 'dispose'/'fill'-levenscyclus wordt afgehandeld; er zullen herhaalde aanroepen van dispose en fill worden gegenereerd door wijzigingen in de workbench (dat wil zeggen wijzigingen in het perspectief of verslepen van de trim).

Wat niet tot uiting komt in de code van dit voorbeeld is de mate waarin de trimlayoutmanager afhankelijk is van de juiste implementatie door de trim van de widgetbesturingsmethode computeSize. De widget moet in staat zijn de voorkeursgrootte te berekenen en te retourneren aangezien deze bij de implementatie van de layoutmanagement wordt gebruikt om bijvoorbeeld te bepalen hoeveel ruimte er voor een bepaald trimgebied is vereist. Raadpleeg de SWT-documentatie voor informatie over het correct implementeren van computeSize.