En aktivitet är en logisk gruppering av funktioner som centreras runt en viss typ av uppgift. Ett exempel: utveckling av Java-program vara är en aktivitet som vanligen utförs av användaren av plattformen och JDT definierar många UI-bidrag (vyer, redigerare, perspektiv, inställningar, etc.) som bara är användbara när denna aktivitet utförs. Innan vi tar en titt på mekaniken för definiering av en aktivitet ska vi titta på hur de användas till att hjälpa till att göra användargränssnittet mindre plottrigt.
Begreppet aktivitet exponeras för användaren, även om det kanske inte är uppenbart för en ny användare. När en aktivitet aktiveras i plattformen, visas de UI-bidrag som är associerade till den aktiviteten. När en aktivitet avaktiveras i plattformen, visas inte dess UI-bidrag. Användare kan aktivera och avaktivera aktiviteter efter behov med hjälp av inställningssidan
Allmänt > Funktioner
. (Aktiviteter hänvisas till som "funktioner" i användargränssnittet, även om vi använder aktivitetsterminologi i API:t).
Vissa användaråtgärder fungerar som utlösningspunkter för aktivering av en aktivitet. Ett exempel: när du skapar ett nytt Java-projekt kan det utlösa aktiveringen av Java-utvecklingsaktiviteten. På det här sättet exponeras användare för den nya funktionen när de behöver den och lär sig gradvis om de aktiviteter som är tillgängliga för dem och hur de påverkar UI:t. När en användare startar plattformen för första gången är det önskvärt att så många aktiviteter som möjligt är avaktiveras så att programmet blir så enkelt som möjligt. Val gjorda på välkomstsidan kan hjälpa till med att avgöra vilka aktiviteter som ska vara aktiverade.
Vi har sett (i Perspektiv) hur perspektiv används till att organisera olika vylayouter och åtgärdsuppsättningar i aktiviteter. Varför behöver vi aktiviteter? Även om perspektiv och aktiviteter definierar liknande typer av åtgärder är den stora skillnaden hur UI-bidragen för en insticksmodul associeras till dem. UI-bidrag associeras till perspektiv i utökningsdefinitionen för bidraget. Dvs, en insticksmodul ansvarar för att avgöra vilka perspektiv dess vyer och åtgärdsuppsättningar tillhör. Insticksmoduler får även definiera sina egna perspektiv. Även när ett perspektiv inte är aktivt kan användaren använda de vyer och åtgärder som är associerade till perspektivet genom kommandon som Visa vy.
Aktiviteter är en högre nivån av organisering. Enskilda UI-bidrag är inte medvetna av aktiviteter och hänvisar inte till aktiviteterna i deras utökningsdefinitioner. Snarare förväntas aktiviteterna konfigureras på en högre nivån, som plattformsintegration/konfiguration eller produktinstallation. Enskilda insticksmoduler definierar vanligen inte nya aktiviteter såvida inte insticksmodulen är en insticksmodul på systemnivå som definierats av en systemintegratör. I ett vanligt scenario avgörs en systemintegratör hur funktionen grupperas i aktiviteter och vilka som aktiveras som standard. Aktiviteter associeras till UI-bidrag genom aktivitetsmönsterbindningar, mönster som matchas mot ID:t för de UI-bidrag som görs av insticksmoduler. Ett exempel hjälper till att demonstrera dessa begrepp.
Aktiviteter definieras med utökningspunkten org.eclipse.ui.activities. Låt oss ta en titt på den förenklade versionen av hur Eclipse SDK-insticksmodulen definierar två aktiviteter - en för utveckling av Java-programvara och en för utveckling av insticksmoduler:
<extension point="org.eclipse.ui.activities"> <activity name="Java Activity" description="Developing Java Software" id="org.eclipse.javaDevelopment"> </activity> <activity name="Plug-in Activity" description="Developing Eclipse Plug-ins" id="org.eclipse.plugInDevelopment"> </activity> ...
Aktiviteter tilldelas ett namn och en beskrivning som kan visas för användaren när han eller hon aktiverar och avaktiverar aktiviteter eller på annat sätt visar information om en aktivitet. ID:t för aktiviteten används vid definiering av mönsterbindningar eller andra förhållanden mellan aktiviteter. Ett exempel: vi kan bestämma att en aktivitet kräver en annan aktivitet.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
Kravbindningen anger att aktiviteten för insticksmodulens utveckling bara kan aktiveras när Java-utvecklingsaktiviteten är aktiverad. Relaterade aktiviteter kan även bindas i kategorier, som visas för användaren när han eller hon arbetar med aktiviteter.
<category name="Development" description="Software Development" id="org.eclipse.categories.developmentCategory"> </category> <categoryActivityBinding activityId="org.eclipse.javaDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding> <categoryActivityBinding activityId="org.eclipse.plugInDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding>
Kategorin grupperar ihop de relaterade utvecklingsaktiviteterna. Den här kategorin visas för användaren när användaren konfigurerar aktiviteter manuellt.
Aktiviteter associeras till UI-bidrag med mönstermatchning. Den mönstermatchning som används i aktivitetsmönsterbindningar följer de regler som beskrivs i paketet java.util.regex för reguljära uttryck. De mönster som används av arbetsmiljön består av två delar. Den första delen använder identifieraren för insticksmodulen som bidrar med UI-utökningen. Den andra delen är det ID som används av själva insticksmodulen vid definiering av bidraget (som innehåller eller inte innehåller insticksmodulens ID som en del av identifieraren). Följande format används:
insticksmodulens identifierare + "/" + lokal identifierareEtt exempel: följande aktivitetsmönsterbindning anger att ett UI-bidrag från en JDT-insticksmoduls ID (org.eclipse.jdt.*) associeras till Java-utvecklingsaktiviteten oavsett dess lokala identifierare (.*).
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Nästa bindning är mer specifik. Den anger att bidraget javanature som definieras i JDT-kärnan (org.eclipse.jdt.core) är associerat till Java-utvecklingsaktiviteten.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Som du kan se kan aktivitetsmönsterbindningar användas till att associera stora grupper av bidrag med en viss aktivitet eller till att associera väldigt specifika bidrag till en aktivitet. Följande bidrag påverkas av aktiviteter:
Den konvention som används av arbetsmiljön (insticksmodulens ID + lokalt ID) gör det möjligt för enkel bindning till insticksmoduler som inte nödvändigtvis följer namngivningsreglerna med prefix för UI-bidragsidentifierare med deras insticksmodulers identifierare. Insticksmoduler som direkt interagerar med aktivitets-API:t är fria att använda sina egna format för identifiering av bidrag och för mönstermatchning mot dessa namn.
Aktiviteter associeras till hjälpbidrag med samma mönstermatchningsschema som används för UI-bidrag. Den andra delen av identifieraren (den lokala identifieraren) anger namnet på innehållsförteckningsfilen (TOC). Ett exempel: följande aktivitetsmönsterbindning associerar alla TOC-filer som bidragits av JDT-insticksmoduler (org.eclipse.jdt.*) med Java-utvecklingsaktiviteten:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>När Java-utvecklingsaktiviteten avaktiveras visas inte hjälpböcker i hjälp-UI:t som bidragits av JDT-insticksmoduler eller eventuella underböcker (innehållsförteckningar länkade till, eller länkade av JDT-böcker), även om de bidragits av en annan insticksmodul. De avsnitt som definieras i dessa böcker visas dessutom inte i sökresultaten. I den händelse där JDT-innehållsförteckningar inte visas som primära innehållsförteckningar utan istället länkas till från en annan innehållsförteckning där de ska visas som underträd i en bok, har avaktivering av JDT-aktiviteten effekten av att underträden döljs. Den innehållande boken verkar då definiera färre avsnitt i UI:t.
Genom att använda mer specifik bindning är det möjligt att associera aktiviteter med utvalda innehållsförteckningar från insticksmoduler som bidrar med flera innehållsförteckningar till hjälpsystemet. Ett exempel: följande aktivitetsmönsterbindning associerar innehållsförteckningen "Examples" med exempelaktiviteten för Java-utveckling.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Med en sådan mönsterbindning leder avaktivering av exempelaktiviteten för Java-utveckling till att avsnittet "Exempel" döljs i boken "Utvecklarhandbok för JDT-insticksprogram".
Arbetsmiljöns aktivitetsstöd innefattar ett API för arbete med de definierade aktiviteterna och ändring av deras aktiveringsläge. De flesta insticksmoduler behöver inte bekymra sig om detta API, men det är användbart vid implementering av funktioner som låter användaren arbeta med aktiviteter eller för implementering av de utlösningspunkter som aktiverar en viss aktivitet. Det antas att alla insticksmoduler som manipulerar aktiviteter genom API är medvetna om de sätt som aktiviteter konfigureras med för en viss produkt. Ett exempel: arbetsmiljön själv använder API:t till att utlösa aktiveringen av aktiviteter som Java-utveckling. Vi ska ta en titt på hur arbetsmiljön använder det generiska aktivitets-API:t till att implementera utlösare.
Navet för all aktivitet i arbetsmiljön ärIWorkbenchActivitySupport. Aktivitetsstödet fungerar parallellt med en IActivityManager. Insticksmoduler kan erhålla aktivitetsstödsförekomsten från arbetsmiljön och aktivitetshanteraren därifrån.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();Följande kodstycke aktiverar Java-utvecklingsaktiviteten (om den inte redan är aktiverad). Den visar en förenklad version av en utlösare.
... //the user did something Java related. Enable the Java activity. Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); if (enabledIds.add("org.eclipse.javaDevelopment")) workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
IActivityManager definierar dessutom protokollet som hämtar alla definierade aktivitets- och kategori-ID:n samt hämtar det associerade IActivity eller ICategory för ett visst ID. Dessa objekt kan användas till att gå igenom definitionen för en aktivitet eller kategori i API:t, t.ex. att hämta mönsterbindningarna eller kravbindningarna. Lyssnare kan registreras i aktivitetshanteraren eller i själva aktiviteterna och kategorierna och upptäcker ändringar i definitionen av en viss aktivitet eller i själva aktivitetshanteraren. Se paketetorg.eclipse.ui.activities för mer information.