Perspektiver

Vi har allerede sett litt på hvordan arbeidsbenken lar brukeren bestemme utseendet til plugin-funksjonalitet. Visninger kan skjules eller vises ved hjelp av menyen Vindu >Vis visning. Handlingssett kan skjules eller vises ved hjelp av menyen Vindu > Tilpass perspektiv.... Disse funksjonene hjelper brukeren med å ordne arbeidsbenken.

Med perspektiver får vi enda et lag for organisering av et arbeidsbenkvindu. Brukere kan veksle mellom perspektiver når de beveger seg på tvers av oppgaver. Et perspektiv definerer en samling av visninger, en layout for visningene og de synlige handlingssettene som skal brukes første gang brukeren åpner perspektivet.

Perspektiver implementeres ved hjelp av  IPerspectiveFactory.  Når IPerspectiveFactory implementeres, må IPageLayout konfigureres med informasjon som beskriver perspektivet og layouten på perspektivsiden.

Layout av arbeidsbenkens deler

En av de viktigste jobbene for en IPageLayout er å beskrive plasseringen av redigeringsprogrammet og visningene i arbeidsbenkvinduet. Merk at disse layoutene skiller seg fra Layout-klassen i SWT. Selv om IPageLayout og Layout behandler omtrent samme problem (tilpasse størrelsen på og plassere widgeter i et større område), trenger du ikke å forstå SWT-layouter for å oppgi layout for en perspektivside.

En perspektivsidelayout initialiseres med ett område for visning av et redigeringsprogram. Perspektiv-factory legger til flere visninger i forhold til redigeringsprogrammet. Visninger legges til i layouten i forhold til en annen del (øverst, nederst, venstre, høyre). Det kan også legges til plassholdere (tomt område) for elementer som ikke vises med en gang.

Hvis du vil ordne beslektede visninger slik at de ser ryddige ut, kan du bruke IFolderLayout for å gruppere visninger i flippmapper. For eksempel plasserer ressursperspektivet ressursnavigatoren i en mappe øverst til venstre i arbeidsbenken. Plassholdere brukes vanligvis sammen med mappelayouter. Ressursperspektivet definerer en plassholder for bokmerkevisningen i samme mappe som ressursnavigatoren. Hvis brukeren viser bokmerkevisningen, vises den i samme mappe som navigatoren, med en flipp for hver visning.

IPageLayout lar deg også definere tilgjengelige handlinger og snarveier i et perspektiv.  

Linke visninger og redigeringsprogrammer til "Vis i"

En annen viktig tjeneste som oppgis av perspektiver og IPageLayout, er hjelp til å navigere mellom et redigeringsprogram og de beslektede visningene.  Vi tenker vanligvis på visninger som noe som hjelper brukeren med å finne objekter som det skal arbeides med i redigeringsprogrammer. Omdanningsoperasjoner er imidlertid også nyttige:  En bruker som arbeider med et objekt i et redigeringsprogram må kanskje navigere til det objektet i en visning. Dette gjøres ved å bruke arbeidsbenkmenyen Naviger > Vis i. Med denne kommandoen kan brukeren hoppe til en av visningene i konteksten for objektet som redigeres (eller er valgt). Det kan for eksempel hende at en bruker som redigerer en fil, vil hoppe til filen i ressursnavigatoren.

Plugin-arkitekturen i arbeidsbenken gjør det mulig for utviklere å bidra med visninger og redigeringsprogrammer i ulike plugin-moduler som ikke er oppmerksomme på hverandre.  Ved å implementere støtte for "Vis i" kan visningen eller redigeringsprogrammet støtte praktisk navigering til eller fra visningene og redigeringsprogrammene som andre plugin-moduler bidrar med. 

Med denne navigeringen kan brukerne raskt veksle mellom visninger og uten problemer åpne en visning som vanligvis ikke vises i et bestemt perspektiv. På denne måten kan for eksempel en bruker som arbeider i Java-perspektivet, bruke Naviger > Vis i for å vise Java-filer som redigeres i navigatorvisningen.

Kilde for Vis i

Hvis du vil at brukere skal kunne bruke Naviger > Vis i i redigeringsprogrammet eller visningen for å hoppe til en annen visning, må du implementere IShowInSource.  Delen din kan oppgi IShowInSource direkte med protokoll (getShowInSource()) eller som en adapter.  IShowInSource lar delen din oppgi en kontekst (ShowInContext) som brukes av målet for å avgjøre hvordan kilden skal vises. Konteksten for Vis i for et redigeringsprogram er vanligvis et inndataelement. For en visning er konteksten vanligvis det utvalget som er gjort. Både et utvalg og et inndataelement oppgis i en ShowInContext slik at målet på en fleksibel måte kan angi hvordan kilden skal vises. 

Det er oppgitt en standard kontekst for redigeringsprogrammer slik at redigeringsprogrammet kan delta i "Vis i" uten spesialkoding. For redigeringsprogrammer brukes inndataelementet og utvalget til å opprette egnet kontekst. 

For visninger må IShowInSource implementeres av visningen for å tilby Naviger > Vis i-funksjonalitet.

Mål for Vis i

Du må implementere IShowInTarget hvis du vil at visningen skal være et gyldig mål for en operasjon som omfatter "Vis i".  Målet skal vise en gitt kontekst på en måte som er hensiktsmessig for presentasjonen.  For eksempel utvider navigatorvisningen treet for å velge og vise en ressurs som er angitt i konteksten.  

Et mål skal først kontrollere utvalget i ShowInContext før det tas stilling til hva som skal vises, ettersom dette er mer spesifikk informasjon.  Inndataelementet skal bare vises hvis det ikke er angitt noe utvalg.

Presentere egnede mål

Hvordan fastsettes listen over tilgjengelige mål? Du kan angi tilgjengelige mål for perspektivet i IPageLayout.  Du husker kanskje at "Vis i"-navigering iblant åpner en visning som ikke finnes i perspektivet. Med IPageLayout.addShowInPart kan du angi et gyldig "Vis i"-mål med en ID. På denne måten opprettes det gyldige mål uten at visninger opprettes unødig.