Perspectieven

Enkele manieren voor het beheren van de functionaliteit van plugins in de workbench zijn al besproken. U kunt views afbeelden of verbergen via Venster > View afbeelden. U kunt actiesets afbeelden of verbergen via het menu Venster > Perspectief aanpassen.... Met behulp van deze features kunt u de workbench organiseren.

Perspectieven bieden een aanvullende organisatielaag binnen een workbenchvenster. U kunt tijdens het uitvoeren van taken naar andere perspectieven overschakelen. Met een perspectief worden een verzameling views, de indeling van de views en de zichtbare actiesets gedefinieerd die moeten worden toegepast zodra de gebruiker het perspectief voor het eerst kiest.

De implementatie van perspectieven verloopt via IPerspectiveFactory. Implementors van IPerspectiveFactory moeten een pagina-indeling (IPageLayout) configureren waarmee het perspectief en de indeling van de perspectiefpagina worden beschreven.

Layout workbenchvenster

Een van de hoofdtaken van IPageLayout is het beschrijven van de plaatsing van de editor en de views in het workbenchvenster. Merk op dat deze layouts verschillen van de klasse Layout in SWT. IPageLayout en Layout hebben beide een vergelijkbare taak (de plaatsing en de afmetingen van widgets in een groter gebied instellen), maar u hoeft geen kennis van SWT-layouts te hebben om de layout van een perspectiefpagina te kunnen aanleveren.

De layout van een perspectiefpagina wordt met één gebied geïnitialiseerd voor het afbeelden van een editor. De perspectief-factory is verantwoordelijk voor het toevoegen van aanvullende views die bij de editor horen. Views worden relatief (boven, onder, links, rechts) in de layout geplaatst ten opzichte van andere onderdelen. Er kunnen ook plaatshouders (lege ruimten) worden toegevoegd voor items die aanvankelijk niet worden afgebeeld.

U kunt bij elkaar behorende views organiseren en de workbench overzichtelijk houden door de views als tabbladen weer te geven met IFolderLayout. Zo wordt de resourcenavigator door het perspectief Resource in een map linksboven in de workbench geplaatst. Plaatshouders worden vaak met maplayouts gebruikt. Het perspectief Resource definieert een plaatshouder voor de bladwijzerview in dezelfde map als de resourcenavigator. Zodra u de bladwijzerview opvraagt, verschijnt deze in dezelfde map als de navigator, met een tabblad voor elke view.

IPageLayout stelt u ook in staat de beschikbare acties in een perspectief te definiëren.   

Views en editors koppelen met "Afbeelden in"

Perspectieven en de paginalayout (IPageLayout) kunnen ook van pas komen bij het navigeren tussen een editor en de bijbehorende views. Views helpen u meestal bij het zoeken van objecten waarmee u in editors wilt werken. Het omgekeerde is ook handig; wellicht wilt u van het object in een editor naar het object in een view navigeren. U kunt deze actie uitvoeren via Navigeren > Afbeelden in van de workbench. Deze opdracht stelt u in staat over te schakelen naar een andere bijbehorende view van het bewerkte (of geselecteerde) object. Als u bijvoorbeeld een bestand bewerkt in de editor, kunt u overschakelen naar het bestand in de resourcenavigator.

Met de pluginarchitectuur van de workbench kunnen ontwikkelaars views en editors toevoegen uit afzonderlijke plugins, die volledig onafhankelijk van elkaar zijn.   U kunt ondersteuning voor "show in" implementeren, zodat u eenvoudig kunt overschakelen naar de views of editors uit andere plugins. 

Deze navigatietechniek maakt het mogelijk snel naar andere views te gaan en eenvoudig views te openen die standaard niet worden afgebeeld in een bepaald perspectief. Werkt u bijvoorbeeld in het Java-perspectief, dan kunt u met Navigeren > Afbeelden in het bewerkte Java-bestand bekijken in de view Navigator.

Bron van "Afbeelden in"

U moet IShowInSource implementeren voordat u naar andere views kunt overschakelen via Navigeren > Afbeelden in. Door het onderdeel kan IShowInSource rechtstreeks worden aangeleverd via een protocol (getShowInSource()) of als adapter. Middels IShowInSource kan door het onderdeel een context worden doorgegeven (ShowInContext) waarmee door het doel wordt bepaald hoe de bron moet worden afgebeeld.  De context voor editors is doorgaans het invoerelement.  Voor views wordt de selectie doorgaans als context gebruikt.  Met ShowInContext worden zowel een selectie en een invoerelement verstrekt, zodat het doel zelf kan bepalen hoe de bron moet worden afgebeeld. 

Voor editors is een standaardcontext beschikbaar, zodat een editor zonder code al kan worden gebruikt met "Afbeelden in".   De context van editors wordt samengesteld op basis van het invoerelement en de selectie. 

Voor views geldt dat IShowInSource moet worden geïmplementeerd voordat u deze met Navigeren > Afbeelden in kunt gebruiken.

Doel van "Afbeelden in"

U moet IShowInTarget implementeren om een view als geldig doel voor "Afbeelden in" beschikbaar te stellen. Het doel zorgt ervoor dat een context op de juiste manier wordt afgebeeld.   In de view Navigator wordt de boomstructuur uitgevouwen en wordt de resource geselecteerd die is opgegeven in de context.  

Voordat het doel bepaalt wat er afgebeeld moet worden, moet eerst de selectie worden vastgesteld in ShowInContext, omdat deze informatie specifieker is. Het invoerelement mag alleen worden afgebeeld als de selectie ontbreekt.

De juiste doelen presenteren

Hoe wordt de lijst met beschikbare doelen vastgesteld? U kunt de beschikbare doelen voor het perspectief opgeven met de bijbehorende paginalayout (IPageLayout). Onthoud dat een navigatie van "Afbeelden in" alleen een view mag openen die nog niet in het perspectief is opgenomen. Door middel van IPageLayout.addShowInPart kunt u een geldig doel opgeven, op basis van het ID, voor "Afbeelden in". Zo worden de geldige doelen vastgesteld zonder dat er per se views worden gemaakt.