Vi har allerede set nogle måder, hvorpå arbejdsbænken tillader brugeren at styre udseendet
af plugin-funktionaliteten. Oversigter kan vises eller skjules via menuen
Vindue -> Vis oversigt. Funktionssæt kan skjules eller vises via menuen
Vindue > Tilpas perspektiv....
Funktionerne hjælper brugeren med at organisere arbejdsbænken.
Perspektiver giver et ekstra lag af organisering inde i et arbejdsbænksvindue. Brugerne kan skifte mellem perspektiver, når de arbejder med opgaverne. Et perspektiv definerer en samling oversigter, et layout af oversigterne og de synlige funktionssæt, der skal benyttes, når en bruger åbner perspektivet første gang.
Perspektiver implementeres med IPerspectiveFactory. Implementorer af IPerspectiveFactory forventes at konfigurere et IPageLayout med oplysninger, der beskriver perspektivet og layoutet af perspektivsiden.
En af de overordnede opgaver for et IPageLayout er at beskrive placeringen af editoren og oversigterne i arbejdsbænksvinduet. Bemærk, at disse layout adskiller sig fra Layout-klassen i SWT. Selvom IPageLayout og Layout løser et ensartet problem (størrelse og placering af widgets i et større område), behøver du ikke at forstå SWT-layout for at kunne angive layoutet af en perspektivside.
En perspektivsides layout initialiseres med en område til fremvisning af en editor. Perspektivfabrikken har ansvaret for at tilføje flere oversigter i forhold til editoren. Oversigter tilføjes til layoutet i forhold til en anden del (top, bund, venstre, højre). Du kan også tilføje pladsholdere, som er tom plads, for elementer, der ikke vises fra starten.
Du kan bruge IFolderLayout til at gruppere oversigter i foldere med skilleblade for at organisere relaterede oversigter og forbedre overskueligheden. Ressourceperspektivet placerer f.eks. ressourcenavigatoren i en folder i det øverste venstre hjørne af arbejdsbænken. Der bruges ofte pladsholdere sammen med folderlayout. Ressourceperspektivet definerer en pladsholder til bogmærkeoversigten i den samme folder som ressourcenavigatoren. Hvis brugeren viser bogmærkeoversigten, vises den i samme folder som navigatoren med et skilleblad for hver oversigt.
IPageLayout giver dig også mulighed for at definere de tilgængelige funktioner og genveje i et perspektiv.
En anden værdifuld funktion, som perspektiverne og IPageLayout stiller til rådighed, er at hjælpe med navigationen mellem en editor og dens relaterede oversigter. Oversigterne betragtes typisk som en hjælp til brugeren med at finde de objekter, der skal arbejdes med i editorer. Den omvendte funktion er imidlertid også nyttig: en bruger, som arbejder med et objekt i et editor, kan have brug for at navigere til objektet inde i en oversigt. Det opnås ved at bruge arbejdsbænkens menu Navigér > Vis i. Kommandoen giver brugeren mulighed for at skifte til et af et vilkårligt antal relaterede vinduer i konteksten for det objekt, der er ved at blive redigeret eller er valgt. En bruger, som redigerer en fil, kan f.eks. skifte til den samme fil i ressourcenavigatoren.
Arbejdsbænkens plugin-arkitektur giver udviklere mulighed for at bidrage med oversigter og editorer i andre plugins, som ikke har kendskab til hinanden. Ved at implementere understøttelse af "Vis i" kan din oversigt eller editor understøtte bekvem navigation til eller fra de oversigter og editorer, som andre plugins bidrager med.
Navigationen tillader brugerne at flytte hurtigt mellem oversigter og let åbne en oversigt, der ikke normalt vises i et bestemt perspektiv. En bruger, som f.eks. arbejder i Java-perspektivet, kan bruge Navigér > Vis i til at få den aktuelt redigerede Java-fil vist i oversigten Navigator.
Hvis brugerne skal kunne benytte Navigér > Vis i fra din editor eller oversigt til at skifte til en anden oversigt, skal du implementere IShowInSource. Din del kan stille dens IShowInSource direkte til rådighed ved at bruge protokol (getShowInSource()) eller som en adapter. IShowInSource giver din del mulighed for at levere en kontekst (ShowInContext), som målet bruger til at afgøre, hvordan kilden skal vises. Vis i kontekst for en editor er normalt dens inputelement. For en oversigt er konteksten normalt dens valg. Der stilles både et valg og et inputelement til rådighed i en ShowInContext for at give målet fleksibilitet i valget af, hvordan kilden skal vises.
Der stilles en standardkontekst for editorer til rådighed, så din editor kan deltage i "Vis i" uden speciel kodning. Hvad angår editorer, bruges inputelementet og valget til at oprette en passende kontekst.
Hvad angår oversigter, skal oversigten implementere IShowInSource for at kunne tilbyde funktionaliteten Navigér > Vis i.
Du skal implementere IShowInTarget, hvis oversigten skal fungere som et gyldigt mål for en "Vis i"-funktion. Målet har ansvaret for at vise en given kontekst på en måde, som passer til dens præsentation. Oversigten Navigator udvider f.eks. sin træstruktur for at vælge og vise en ressource, der er angivet i konteksten.
Et mål skal først undersøge valget i ShowInContext for at afgøre, hvad der skal vises, fordi dette er mere specifikke oplysninger. Det skal kun vise inputelementet, hvis der ikke er angivet et valg.
Hvordan afgøres listen med tilgængelige mål? Du kan angive de tilgængelige mål for perspektivet i dets IPageLayout. Husk, at en "Vis i"-navigation kan åbne en oversigt, som ikke allerede er til stede i perspektivet. Du kan bruge IPageLayout.addShowInPart til at angive et gyldigt "Vis i"-mål efter id. På den måde kan de gyldige mål etableres uden unødvendig oprettelse af oversigter.