Een activiteit is een logische groepering van functies die op een bepaalde taak gericht zijn. Java-software wordt vaak door gebruikers van het platform ontwikkeld en de aanleveringen voor de gebruikersinterface die door JDT worden gedefinieerd (views, editors, perspectieven, voorkeursinstellingen, enz.), komen alleen van pas bij het ontwikkelen van Java-software. Er wordt nu uitgelegd hoe activiteiten ervoor zorgen dat de gebruikersinterface overzichtelijk blijft.
Het concept van een activiteit wordt voor u beschikbaar, hoewel u dit wellicht niet meteen zult merken als u een nieuwe gebruiker bent. Wanneer een activiteit wordt ingeschakeld, worden alle gebruikersinterface-aanleveringen voor die activiteit afgebeeld. Anders zijn de aanleveringen niet zichtbaar. U kunt activiteiten in- en uitschakelen via de voorkeursinstellingenpagina
Algemeen > Voorzieningen. (In de gebruikersinterface wordt een activiteit als "voorziening" beschouwd.)
Door het uitvoeren van bepaalde bewerkingen worden activiteiten ingeschakeld. Als u bijvoorbeeld een nieuw Java-project maakt, wordt de activiteit voor Java-ontwikkeling beschikbaar. Zo worden nieuwe functies pas beschikbaar zodra u deze nodig hebt en ontdekt u langzamerhand welke activiteiten aan de functies gekoppeld zijn en hoe deze de gebruikersinterface beïnvloeden. Zodra het platform voor het eerst wordt gestart, is het wenselijk zo veel mogelijk functionaliteit uit te schakelen om de toepassing zo overzichtelijk mogelijk te houden. Op basis van instellingen op de welkomstpagina kunnen de activiteiten worden vastgesteld die ingeschakeld moeten worden.
In het onderwerp Perspectieven) hebt u kunnen lezen hoe diverse viewlayouts en actiesets in taken kunnen worden georganiseerd met behulp van perspectieven. Waartoe dienen activiteiten? Perspectieven en activiteiten definiëren beide vergelijkbare typen taken, maar het belangrijkste verschil schuilt in het koppelen van gebruikersinterface-aanleveringen aan een perspectief of activiteit. Gebruikersinterface-aanleveringen worden aan perspectieven gekoppeld in de extensiedefinitie van de aanlevering. Dat wil zeggen dat de plugin bepaalt van welke perspectieven de views en de actiesets van de plugin deel uitmaken. Plugins kunnen ook zelf perspectieven definiëren. Zelfs wanneer perspectieven niet actief zijn, zijn de views en acties ervan voor u toegankelijk via de opdracht View afbeelden.
Activiteiten vormen een hoger organisatieniveau. Afzonderlijke aanleveringen voor de gebruikersinterface kunnen niet op activiteiten reageren en bevatten geen verwijzingen naar activiteiten in de extensiedefinities van de aanleveringen. In plaats daarvan moeten de activiteiten worden geconfigureerd door middel van platformintegratie of -configuratie of productinstallatie. Alleen plugins op systeemniveau, die door een systeemintegrator zijn gedefinieerd, kunnen nieuwe activiteiten definiëren. Doorgaans wordt door een systeemintegrator bepaald hoe activiteiten worden gegroepeerd en welke activiteiten standaard beschikbaar zijn. Activiteiten worden aan aanleveringen voor de gebruikersinterface gekoppeld met behulp van zoekreeksbindingsregels. De zoekreeksen worden met de ID's van de aanleveringen vergeleken. Deze concepten kunnen worden verduidelijkt aan de hand van een voorbeeld.
Activiteiten worden gedefinieerd met behulp van het extensiepunt org.eclipse.ui.activities. Hieronder ziet u een vereenvoudigde definitie van twee activiteiten (één voor het ontwikkelen van Java-software, één voor het ontwikkelen van plugins) door de plugin van de Eclipse SDK:
<extension point="org.eclipse.ui.activities"> <activity name="Java-activiteit" description="Java-software ontwikkelen" id="org.eclipse.javaDevelopment"> </activity> <activity name="Pluginactiviteit" description="Eclipse-plugins ontwikkelen" id="org.eclipse.plugInDevelopment"> </activity> ...
De naam en de beschrijving van de activiteit worden afgebeeld bij het in- en uitschakelen van activiteiten en bij het opvragen van informatie over een activiteit. Het ID van de activiteit wordt gebruikt voor het definiëren van bindingsregels of andere relaties tussen activiteiten. U kunt een activiteit bijvoorbeeld afhankelijk maken van een andere activiteit.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
De bindingsregels geven aan dat de ontwikkactiviteit voor plugins alleen kan worden ingeschakeld als de ontwikkactiviteit voor Java ook is ingeschakeld. U kunt verwante activiteiten ook groeperen met behulp van categorieën, die worden afgebeeld wanneer u met activiteiten werkt.
<category name="Ontwikkeling" description="Software-ontwikkeling" 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>
De verwante ontwikkelingsactiviteiten worden door de categorie gegroepeerd. Bij het handmatig configureren van activiteiten wordt de categorie afgebeeld.
Activiteiten worden aan aanleveringen voor de gebruikersinterface gekoppeld door zoekreeksen met elkaar te vergelijken. De zoekreeksen voor de bindingsregels van activiteiten zijn gebaseerd op de regels van het pakket java.util.regex voor expressies. De zoekreeksen die door de workbench worden gebruikt, bestaan uit twee delen. Voor het eerste deel wordt het ID gebruikt van de plugin waarmee de extensie voor de gebruikersinterface wordt aangeleverd. Voor het tweede deel wordt het ID gebruikt van de plugin zelf bij het definiëren van de aanlevering. (Mogelijk bevat de identificatie hiervan ook het ID van de plugin.) Hierbij geldt de volgende notatie:
plugin-identificatie + "/" + lokale identificatieIn de onderstaande bindingsregels wordt bijvoorbeeld aangegeven dat alle gebruikersinterface-aanleveringen met het JDT-ID (org.eclipse.jdt.*) aan de Java-ontwikkelactiviteit worden gekoppeld, ongeacht de lokale identificatie. (.*)
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>De volgende bindingsregel is specifieker, omdat de aanlevering javanature uit de JDT-core (org.eclipse.jdt.core) aan de Java-ontwikkelactiviteit moet worden gekoppeld.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Zoals u ziet, kunt u bindingsregels gebruiken om grote groepen aanleveringen of juist zeer specifieke aanleveringen aan een activiteit te koppelen. Activiteiten zijn van invloed op de volgende aanleveringen:
De conventie die door de workbench wordt gehanteerd (plugin-ID + lokaal ID) maakt het mogelijk plugins te koppelen waarvan de ID's van de aanleveringen niet het ID van de plugin bevatten. Plugins die rechtstreeks interactie hebben met de activiteits-API kunnen een eigen notatie hanteren.
Activiteiten kunnen aan Help-aanleveringen worden gekoppeld met dezelfde methode voor zoekreeksvergelijking als voor gebruikersinterface-aanleveringen. Het tweede deel van het ID (het lokale ID) bevat de naam van het inhoudsopgavebestand. Met de volgende bindingsregels kunt u bijvoorbeeld alle inhoudsopgavebestanden van JDT-plugins (org.eclipse.jdt.*) aan de Java-ontwikkelactiviteit koppelen:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Als de Java-ontwikkelactiviteit is uitgeschakeld, worden Help-boeken van JDT-plugins (of subboeken met gekoppelde inhoudsopgaven) niet afgebeeld in de Help-gebruikersinterface (zelfs wanneer deze door andere plugins zijn aangeleverd). De onderwerpen uit deze boeken zijn evenmin beschikbaar in de zoekresultaten. Als een JDT-inhoudsopgave niet als primaire inhoudsopgave is ingesteld maar gekoppeld is en als substructuur wordt afgebeeld in een boek, wordt de structuur verborgen bij het uitschakelen van de JDT-activiteit. Het boek bevat minder onderwerpen in de gebruikersinterface.
Met specifiekere bindingsregels is het mogelijk activiteiten te koppelen aan geselecteerde inhoudopgaven uit plugins waarmee meerdere inhoudsopgaven voor het Help-systeem worden aangeleverd. Met de volgende bindingsregels kunt u bijvoorbeeld de inhoudsopgave "Voorbeelden" aan de Java-ontwikkelactiviteit koppelen.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Deze bindingsregels zorgen ervoor dat de sectie "Voorbeelden" uit het boek "JDT Plug-in Developer Guide" wordt verborgen bij het uitschakelen van de Java-ontwikkelvoorbeeldenactiviteit.
De workbench ondersteunt een API voor het werken met de gedefinieerde activiteiten en het in- of uitschakelen van de activiteiten. De API speelt in de meeste plugins geen rol, maar komt wel van pas bij het implementeren van functionaliteit voor het werken met activiteiten of bij het implementeren van activeringspunten voor activiteiten. Zorg ervoor dat plugin voor het manipuleren van activiteiten via API kunnen omgaan met de configuratiemethoden van de activiteiten voor een bepaald product. De workbench zelf gebruikt de API bijvoorbeeld voor het inschakelen van activiteiten (zoals Java-ontwikkeling). Er wordt uitgelegd hoe de generieke activiteits-API door de workbench wordt gebruikt voor het implementeren van activeringspunten.
Alle activiteiten in de workbench zijn gebaseerd op IWorkbenchActivitySupport. De activiteitsondersteuning werkt samen met IActivityManager. De activiteitsondersteunings-instance kan door plugins worden opgehaald uit de workbench en de activiteitsmanager kan door de plugins worden opgehaald uit de instance.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();In het volgende fragment ziet u hoe u de Java-ontwikkelactiviteit kunt inschakelen (mocht deze nog niet ingeschakeld zijn). Hierin wordt een vereenvoudigd activeringspunt afgebeeld.
... // Een bewerking m.b.t. Java uitgevoerd door gebruiker. Java-activiteit inschakelen. Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); if (enabledIds.add("org.eclipse.javaDevelopment")) workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
IActivityManager definieert ook een protocol voor het ophalen van alle ID's van gedefinieerde activiteiten en categorieën en voor het ophalen van de activiteit (IActivity) en de categorie (ICategory) van een bepaald ID. U kunt deze objecten om informatie van een activiteit of categorie in API op te vragen, zoals het ophalen van de zoekreeks- en de afhankelijkheidsbindingsregels. Ook kunt u listeners registreren voor de activiteitsmanager of de activiteiten en categorieën, zodat op wijzigingen in de definitie van een bepaalde activiteit of de activiteitsmanager kan worden gereageerd. Raadpleeg het pakket org.eclipse.ui.activities voor meer informatie.