Perspektiv

Vi har redan sett några sätt som arbetsmiljön tillåter användaren styra utseendet på instickprogrammets funktioner. Vyer kan döljas eller visas med hjälp av menyn Fönster >Visa vy. Åtgärdsuppsättningar kan döljas eller visas med hjälp av menyn Fönster > Anpassa perspektiv... . Dessa funktioner hjälper användaren organisera arbetsmiljön.

Perspektiv tillhandahåller ytterligare ett lager av organisation i ett arbetsmiljöfönster. Användare kan växla mellan perspektiv när du rör sig genom uppgifter. Ett perspektiv definierar en samling vyer, en layout för vyerna och de synliga åtgärdsuppsättningar som ska användas när användaren öppnar perspektivet den första gången.

Perspektiv implementeras med  IPerspectiveFactoryImplementatorer av IPerspectiveFactory förväntas konfigurera en IPageLayout med information som beskriver perspektivet och dess perspektivsidlayout.

Layout av arbetsmiljöns delar

Ett av huvuduppgifterna för en IPageLayout är att beskriva placeringen av redigeraren och vyerna i arbetsmiljöfönstret. Lägg märke till att dessa layouter skiljer sig från klassen Layout i SWT. Även om IPageLayout och Layout löser ett liknande problem (storleksanpassning och placering av gränssnittskontroller i ett större område), behöver du inte förstå SWT-layouter för att tillhandahålla en perspektivsidlayout.

En perspektivsidlayout initieras med ett område för visning av en redigerare. Perspektivfabriken ansvarar för att lägga till ytterligare vyer i förhållande till redigeraren. Vyer läggs till i layouten i förhållande till (överkant, underkant, vänster, höger) en annan del. Platshållare (tomt område) kan även läggas till för objekt som inte visas från början.

Om du vill organisera relaterade vyer och minska gyttret, kan du använda IFolderLayout till att gruppera vyer i flikmappar. Ett exempel: perspektivet Resource placerar resursnavigatorn i en mapp längst upp till vänster i arbetsmiljön.  Platshållare används vanligen tillsammans med mapplayouter. Perspektivet Resource definierar en platshållare för bokmärkesvyn i samma mapp som resursnavigatorn. Om användaren visar bokmärkesvyn visas den i samma mapp med navigatorn, men en flik för varje vy.

Med IPageLayout kan du även definiera de tillgängliga åtgärderna och genvägarna i ett perspektiv.  

Länka vyer och redigerare med "Visa i"

En annan värdefull funktion som tillhandahålls av perspektiv ochIPageLayout är att hjälpa till i navigeringen mellan en redigerare och dess tillhörande vyer.  Vi tänker vanligen på vyer som en hjälp för användaren att hitta de objekt han eller hon ska arbeta med i redigerare.  Däremot är även omvandlingsoperationen användbar:  en användare som arbetar med ett objekt i en redigerare kan behöva navigera till det objektet inuti en vy.  Detta kan åstadkommas med menyn Navigera > Visa i i arbetsmiljön.  Med det här kommandot kan användaren hoppa till valfri vy i ontexten för det objekt som redigeras (eller är markerat). Ett exempel: en användare som redigerar en fil kan vilja hoppa över till den filen i resursnavigatorn.

Arkitekturen med insticksprogram i arbetsmiljön gör det möjligt för utvecklare att bidra med vyer och redigerare i olika insticksprogram som inte ens är medvetna av varandra. Genom att implementera stöd för "visa i" kan vyn eller redigeraren stödja bekväm navigering till eller från vyerna och redigerarna som andra insticksprogram bidrar med. 

Med denna navigering kan användare flytta snabbt mellan vyer och enkelt öppna en vy som vanligen inte visas i ett visst perspektiv.  Ett exempel: en användare som arbetar i Java-perspektivet kan använda Navigera > Visa i till att visa den Java-fil som redigeras för tillfället i navigeringsvyn.

Källa för Visa i

Om du vill tillåta användarna använda Navigera > Visa i från redigeraren eller vyn till att hoppa till en annan vy, måste du implementeraIShowInSource. Din del kan tillhandahålla dessIShowInSource direkt med protokoll (getShowInSource()) eller som en adapter. Med IShowInSource kan din del tillhandahålla en kontext (ShowInContext) som används av målet för att avgöra hur källan ska visas.  Visa i-kontexten för en redigerare i vanligen dess indataelement.  För en vy, är kontexten vanligen dess urval.  Både ett urval och ett indataelement tillhandahålls i en ShowInContext för att ge målet flexibilitet i att avgöra hur källan ska visas. 

En standardkontext för redigerare tillhandahålls så att redigeraren kan delta i "visa i" utan särskild kodning.  För redigerare används indataelementet och urvalet till att skapa en motsvarande kontext. 

För vyer måste IShowInSource implementeras av byn för att erbjuda Navigera > Visa i-funktionalitet.

Visa i-mål

Du måste implementera IShowInTarget om du vill att vyn ska vara ett giltigt mål för en "visa i"-operation.  Målet ansvarar för att visa en given kontext på ett sätt som är lämpligt för dess presentation.  Ett exempel: navigeringsvyn expanderar sitt träd så att en resurs som anges i kontexten avslöjas.  

Ett mål ska kontrollera urvalet iShowInContext först och sedan avgöra vad som ska visas, eftersom detta är den mer specifika informationen.  Det ska bara visa indataelementet om inget urval har angetts.

Presentera rätt mål

Hur fastställs listan med tillgängliga mål?  Du kan ange tillgängliga mål för perspektivet i dess IPageLayout.  Du kommer kanske ihåg att en "visa i"-navigering ibland öppnar en vy som inte redan finns i perspektivet.  Med IPageLayout.addShowInPart kan du ange ett giltigt "visa i"-mål per id.  På det här sättet kan giltiga mål upprättas utan att några vyer skapas i onödan.