En aktivitet er en logisk gruppering av funksjoner rundt en bestemt type oppgave. For eksempel er utvikling av Java-programvare en aktivitet som vanligvis utføres av brukere i plattformen, og JDT definerer mange bidrag til brukergrensesnitt (visninger, redigeringsprogrammer, perspektiver, preferanser osv.) som bare er nyttige ved utførelse av denne aktiviteten. Før vi ser på mekanismene med å definere en aktivitet, skal vi se nærmere på hvordan de brukes for å gjøre brukergrensesnittet mer "oversiktlig".
Begrepet med en aktivitet vises for brukeren, selv om det kanskje ikke er åpenbart for en ny
bruker. Når en aktivitet aktiveres i plattformen, vil bidragene til brukergrensesnitt som
er tilknyttet aktiviteten, bli vist. Når en aktivitet deaktiveres i plattformen, vises
ikke bidragene til brukergrensesnitt. Brukere kan aktivere og deaktivere aktiviteter etter behov, via preferansesiden
Generelt > Funksjonalitet. (Det refereres til aktiviteter som "funksjonalitet" i
brukergrensesnittet, selv om vi bruker begrepet aktivitet i programmeringsgrensesnittet).
Bestemte brukeroperasjoner fungerer som utløsingspunkter for aktivering av en aktivitet. For eksempel kan opprettelse av et nytt Java-prosjekt utløse aktivering av Java-utviklingsaktiviteten. På denne måten får brukere nye funksjoner etter hvert som de trenger, og lærer gradvis om tilgjengelige aktiviteter og hvordan de påvirker brukergrensesnittet. Når en bruker starter plattformen første gang, er det ønskelig at så mange aktiviteter som mulig er deaktivert slik at applikasjonen er så enkel som mulig. Det er mulig å angi valg på velkomstsiden for å fastsette hvilke aktiviteter som skal aktiveres.
Vi har sett (i Perspektiver) hvordan perspektiver brukes til å ordne ulike visningslayouter og handlingssett til oppgaver. Hvorfor trenger vi aktiviteter? Selv om både perspektiver og aktiviteter definerer oppgaver som ligner hverandre, skiller de seg fra hverandre når det gjelder tilknytning av bidrag til brukergrensesnitt for en plugin-modul. Bidrag til brukergrensesnitt tilknyttes perspektiver i utvidelsesdefinisjonen til bidraget. Det vil si at en plugin-modul bestemmer hvilke perspektiver visningene og handlingssettene tilhører. Plugin-modulene kan også fritt definere egne perspektiver. Selv om et perspektiv ikke er aktivt, får brukeren tilgang til visningene og handlingene som er tilknyttet perspektivet gjennom kommandoer som Vis visning.
Aktiviteter er et høyere nivå av organisering. Enkeltbidrag til brukergrensesnitt kjenner ikke til aktiviteter og refererer ikke til aktivitetene i utvidelsesdefinisjonene. Aktivitetene forventes derimot å konfigureres på et høyere nivå, for eksempel som plattformintegrering/-konfigurasjon eller produktinstallering. Enkeltstående plugin-moduler definerer vanligvis ikke nye aktiviteter, med mindre plugin-modulen befinner seg på systemnivå og er definert av en systemintegrator. Et vanlig scenario går ut på at systemintegratoren fastsetter hvordan funksjonen grupperes i aktiviteter og hvilke aktiviteter som skal aktiveres som standard. Aktiviteter tilknyttes bidrag til brukergrensesnitt gjennom aktivitetsmønsterbindinger, mønstre som samsvares med IDen for grensesnittbidrag fra plugin-moduler. Vi kan se nærmere på disse begrepene gjennom et eksempel.
Aktiviteter defineres ved hjelp av utvidelsespunktet org.eclipse.ui.activities. Vi skal se på en forenklet versjon av hvordan plugin-modulen for Eclipse SDK definerer to aktiviteter, en for utvikling av Java-programvare og en for utvikling av plugin-moduler.
<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 tildeles et navn og en beskrivelse som vises for brukeren når brukeren aktiverer og deaktiverer aktiviteter, eller på annen måte viser informasjon om en aktivitet. IDen for aktiviteten brukes når det defineres mønsterbindinger eller andre forbindelser mellom aktivitetene. Vi kan for eksempel angi at en aktivitet krever en annen aktivitet.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
Kravbindingen angir at aktiviteten for plugin-utviklingen bare kan aktiveres når Java-utviklingsaktiviteten er aktivert. Tilknyttede aktiviteter kan også bindes i kategorier som vises for brukeren når brukeren arbeider 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>
Kategorien grupperer de relaterte utviklingsoppgavene sammen. Denne kategorien vises for brukeren når brukeren konfigurerer aktivitetene manuelt.
Aktiviteter tilknyttes grensesnittbidrag ved å samsvare mønstre. Samsvarende mønstre i aktivitetsmønsterbindinger følger reglene som er beskrevet i pakken java.util.regex for vanlige uttrykk. Mønstrene som brukes av arbeidsbenken består av to deler. Den første delen bruker IDen til plugin-modulen som bidrar med utvidelsen for brukergrensesnitt. Den andre delen er IDen som plugin-modulen bruker selv ved definering av bidraget (som eventuelt inneholder plugin-IDen som en del av identifikatoren). Følgende format brukes:
plugin-ID + "/" + lokal IDFor eksempel angir følgende aktivitetsmønsterbinding at et grensesnittbidrag fra en JDT-plugins ID (org.eclipse.jdt.*) tilknyttes Java-utviklingsaktiviteten uavhengig av den lokale IDen (.*).
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Neste binding er mer spesifikk. Den angir at bidraget javanature som er definert i JDT-kjernen (org.eclipse.jdt.core), tilknyttes Java-utviklingsaktiviteten.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Som du ser kan aktivitetsmønsterbindinger brukes for å knytte store grupper bidrag til en bestemt aktivitet, eller knytte svært spesifikke bidrag til en aktivitet. Følgende bidrag påvirkes av aktiviteter:
Formatet som brukes i arbeidsbenken (plugin-ID + lokal ID) gjør det mulig med enkel binding til plugin-moduler som ikke nødvendigvis følger navngivningsreglene med plugin-modulens ID som prefiks i IDer for brukergrensesnittbidrag. Plugin-moduler som samhandler direkte med aktivitetens programmeringsgrensesnitt, kan fritt bruke egne formater når bidrag identifiseres og mønster samsvares med disse navnene.
Aktiviteter tilknyttes hjelpebidrag ved hjelp av samme skjema for mønstersammenlikning som det som brukes for grensesnittbidrag. Den andre delen av IDen (den lokale IDen) angir navnet på innholdsfortegnelsesfilen (TOC). For eksempel knytter følgende aktivitetsmønsterbinding alle TOC-filene som oppgis av plugin-modulens JDT (org.eclipse.jdt.*), til Java-utviklingsaktiviteten:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Når Java-utviklingsaktiviteten er deaktivert, vises ikke hjelpebøker fra JDT-plugin-modulene i hjelpegrensesnittet, ei heller eventuelle underbøker (innholdsfortegnelser som er linket til eller av JDT-bøker) selv om de er bidrag fra en annen plugin-modul. Emnene som er definert i disse bøkene, vil heller ikke bli vist i søkeresultatet. Hvis JDT-innholdsfortegnelsene ikke ble vist som primære innholdsfortegnelser, men i stedet er linket fra en annen innholdsfortegnelse og vises som undertrær i en bok, vil deaktivering av JDT ha samme effekt som å skjule undertrærne. Boken med innhold definerer tilsynelatende færre emner i brukergrensesnittet.
Ved å bruke mer spesifikk binding er det mulig å knytte aktiviteter med valgte innholdsfortegnelser fra plugin-moduler med flere innholdsfortegnelser, til hjelpesystemet. For eksempel knytter følgende aktivitetsmønsterbinding innholdsfortegnelsen for eksempler til eksempelaktiviteten for Java-utvikling.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Ved slike mønsterbindinger vil deaktivering av Java-utviklingseksemplene skjule eksempeldelen i utviklerhåndboken for JDT-plugin-modulen.
Arbeidsbenkaktiviteten støtter et programmeringsgrensesnitt for arbeid med definerte aktiviteter og endring av den aktiverte tilstanden. De fleste plugin-modulene trenger ikke tenke på dette programmeringsgrensesnittet, men det er nyttig ved implementering av funksjoner som gir brukeren tilgang til å arbeide med aktiviteter, eller ved implementering av utløsingspunkter som aktiverer en bestemt aktivitet. Det forutsettes at plugin-moduler som manipulerer aktiviteter gjennom et programmeringsgrensesnitt, er oppmerksomme på aktivitetenes konfigurasjonsmetoder for et bestemt produkt. For eksempel bruker selve arbeidsbenken programmeringsgrensesnittet til å utløse aktivering av aktiviteter, for eksempel Java-utvikling. Vi skal se på hvordan arbeidsbenken bruker det generiske aktivitetsprogrammeringsgrensesnittet til å implementere utløsere.
Knutepunktet for all aktivitet i arbeidsbenken er IWorkbenchActivitySupport. Aktiviteten fungerer parallelt med en IActivityManager. Plugin-moduler kan hente forekomsten av aktivitetsstøtten fra arbeidsbenken og aktivitetsstyreren derfra.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();Følgende snutt aktiverer Java-utviklingsaktiviteten (hvis den ikke allerede er aktivert). Den viser en forenklet versjon av en utløser.
... //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 definerer også protokoll for henting av alle definerte aktivitets- og kategori-IDer og for henting av den tilknyttede IActivity eller ICategory for en bestemt ID. Disse objektene kan brukes til å traversere definisjonen av en aktivitet eller kategori i programmeringsgrensesnittet, for eksempel henting av mønsterbindinger eller kravbindinger. Lyttere kan registreres i aktivitetsstyreren eller i selve aktivitetene og kategoriene for å finne endringer i definisjonen av en bestemt aktivitet eller i selve aktivitetsstyreren. Du finner mer informasjon i pakken org.eclipse.ui.activities.