Attività

Un'attività è un raggruppamento logico di funzioni centrato intorno a un determinato tipo di operazione. Ad esempio, lo sviluppo del software Java è un'attività comunemente eseguita dagli utenti della piattaforma e il JDT definisce molti contributi all'UI (viste, editor, prospettive, preferenze e così via) utili solo quando si esegue questa attività. È necessario esaminare prima i meccanismi per la definizione di un'attività ed il modo in cui vengono utilizzati per consentire il "declutter" dell'UI.

Il concetto di attività è chiaro agli utenti, nonostante non sia forse così evidente per i nuovi utenti. Quando un'attività viene abilitata nella piattaforma, vengono visualizzati i contributi UI associati all'attività. Quando un'attività è disabilitata nella piattaforma, i contributi UI non vengono visualizzati. Gli utenti possono abilitare e disabilitare le attività in base alle necessità, utilizzando la pagina delle preferenze Workbench>Funzioni. (Si fa riferimento alle attività come a "funzioni" dell'interfaccia utente, anche se nell'API si utilizza la terminologia dell'attività).

Alcune operazioni dell'utente vengono utilizzate come punti di attivazione per l'abilitazione di un'attività. Ad esempio, la creazione di un nuovo progetto Java potrebbe attivare l'abilitazione dell'attività di sviluppo Java. In questo modo, gli utenti sono esposti alla nuova funzione in base alle necessità e conoscono gradualmente le attività disponibili e come tali attività influiscono sull'UI. Quando un utente avvia per la prima volta la piattaforma, è consigliabile che siano disabilitate il maggior numero di attività, in modo che l'applicazione sia il più semplice possibile. Le scelte effettuate nella pagina di benvenuto possono aiutare a stabilire le attività da disabilitare.

Attività e prospettive

Nella sezione Prospettive è stato illustrato come le prospettive vengano utilizzate per organizzare i vari layout di una vista e gli insiemi di azioni in attività. Perché sono necessarie le attività? Mentre prospettive e attività definiscono tipi di operazioni simili, la differenza principale sta nel modo in cui sono associati i contributi UI di un plugin. I contributi UI sono associati alle prospettive nella definizione dell'estensione del contributo. Ciò significa che un plugin è in grado di determinare a quali prospettive appartengono le viste e gli insiemi di azioni. I plugin sono anche in grado di stabilire le relative prospettive. Anche quando una prospettiva non è attiva, l'utente può accedere alle viste e alle azioni associate alla prospettive mediante comandi quali Mostra vista.

Le attività rappresentano un livello più elevato di organizzazione. I singoli contributi UI non sono consapevoli delle attività e non fanno riferimento alle attività nelle definizioni delle estensioni. Le attività vengono configurate ad un livello superiore, quale l'integrazione/configurazione della piattaforma o l'installazione del prodotto. I singoli plugin in genere non definiscono le nuove attività, a meno che il plugin non sia un plugin a livello di sistema definito da un integratore di sistemi. In uno scenario tipico, un integratore di sistemi determina il modo in cui la funzione è raggruppata in attività e le attività abilitate per impostazione predefinita. Le attività sono associate ai contributi UI utilizzando le associazioni dei modelli di attività, modelli che corrispondono all'id dei contributi UI effettuati dai plugin. Un esempio consente di dimostrare questi concetti.

Definizione di un'attività

Le attività sono definite utilizzando il punto di estensione org.eclipse.ui.activities. Di seguito viene riportata una versione semplificata del modo in cui il plugin SDK Eclipse definisce due attività, una per lo sviluppo del software Java e l'altra per lo sviluppo dei plugin:

<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>
	...

Alle attività vengono assegnati un nome e una descrizione che possono essere visualizzati all'utente ogni volta che l'utente abilita e disabilita le attività o informazioni su un'attività altrimenti visualizzate. L'id dell'attività viene utilizzato quando si definiscono le associazioni dei modelli o altre relazioni tra le attività. Ad esempio, è possibile stabilire che un'attività richieda un'altra attività.

<activityRequirementBinding
	activityId="org.eclipse.plugInDevelopment"
	requiredActivityId="org.eclipse.javaDevelopment">
</activityRequirementBinding>

L'associazione richiesta prevede che l'attività di sviluppo del plugin possa essere abilitata solo quando è abilitata l'attività di sviluppo Java. Anche le attività correlate possono essere collegate alle categorie, visualizzate all'utente quando l'utente gestisce le attività.

<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>

La categoria raggruppa le attività di sviluppo correlate. Questa categoria viene visualizzata all'utente quando l'utente configura manualmente le attività.

Associazione delle attività ai contributi UI

Le attività sono associate ai contributi UI utilizzando la corrispondenza dei modelli. La corrispondenza dei modelli utilizzata nelle associazioni dei modelli di attività segue le regole descritte nel pacchetto java.util.regex relativo ad espressioni normali. I modelli utilizzati dal workbench sono composti di due parti. La prima parte utilizza l'identificativo del plugin che fornisce l'estensione UI. La seconda parte è l'id utilizzato dal plugin quando si definisce il contributo (che può o non includere l'id del plugin come parte dell'identificativo). Viene utilizzato il seguente formato:

plugin-identifier + "/" + local-identifier
Ad esempio, l'associazione del modello di attività di seguito riportato presuppone che un contributo UI da un qualsiasi id del plugin JDT (org.eclipse.jdt.*) sia associato all'attività di sviluppo Java, indipendentemente dall'identificativo locale (.*).
<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\..*/.*">
</activityPatternBinding>
L'associazione successiva è più specifica. Presuppone che il contributo denominato javanature definito nel nucleo JDT (org.eclipse.jdt.core) sia associato all'attività di sviluppo Java.
<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\.core/javanature">
</activityPatternBinding>
Le associazioni dei modelli di attività possono essere utilizzati per associare gruppi di contributi di grandi dimensioni ad una determinata attività o per associare contributi molto specifici ad un'attività. I contributi di seguito riportati sono influenzati dalle attività:

La convenzione utilizzata dal workbench (id plugin + id locale) consente la semplice associazione ai plugin che non necessariamente seguono la pratica di denominazione secondo la quale un prefisso viene inserito per gli identificativi di contributo UI con i relativi identificativi di plugin. I plugin che interagiscono direttamente con le API delle attività sono liberi di utilizzare il formato delle API per identificare i contributi e per creare una corrispondenza modello con quei nomi.

Associazione delle attività ai contributi della guida

Le attività sono associate ai contributi della guida mediante lo stesso schema di associazione modelli utilizzato per i contributi UI. La seconda parte dell'identificativo (l'identificativo locale) indica il nome del file TOC (table of contents). Ad esempio, l'associazione del modello di attività di seguito riportata associa tutti i file TOC forniti dai plugin JDT (org.eclipse.jdt.*) all'attività di sviluppo Java:

<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\..*/.*">
</activityPatternBinding>
Quando l'attività di sviluppo Java è disabilitata, i manuali della guida forniti dai plugin JDT o altri manuali secondari (TOC collegati a manuali JDT o collegati da manuali JDT), anche se forniti da un plugin diverso, non vengono visualizzati nell'UI della guida. Gli argomenti definiti in questi manuali non vengono visualizzati nei risultati della ricerca. Nel caso in cui i TOC JDT non vengano visualizzati come TOC principali, ma siano invece collegati da un altro TOC in modo che appaiano come strutture ad albero secondarie in un manuale, la disabilitazione dell'attività JDS ha l'effetto di nascondere le strutture ad albero secondarie. Il manuale viene visualizzato per definire un numero inferiore di argomenti nell'UI.

Utilizzando un'associazione più specifica, è possibile associare le attività ai TOC selezionati dai plugin che forniscono più TOC al sistema della guida. Ad esempio, l'associazione del modello di attività di seguito riportata associa il TOC "Esempi" agli esempi di sviluppo Java.

<activityPatternBinding
	activityId="org.eclipse.javaDevelopmentExamples"
	pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml">
</activityPatternBinding>
Con tale associazione di modelli, la disabilitazione dell'attività degli esempi di sviluppo Java consente di nascondere la sezione "Esempi" dal manuale "JDT Plug-in Developer Guide".

Utilizzo dell'API delle attività

Il supporto attività del workbench include un'API per la gestione delle attività definite e la modifica dello stato abilitato. Molti plugin non sono associati a questa API, ma questa API è utile quando si implementa la funzione che consente all'utente di gestire le attività o per l'implementazione dei punti di attivazione che abilitano una determinata attività. Si presuppone che qualsiasi plugin che modifica le attività mediante l'API conosca i modi in cui queste attività sono configurate per un determinato prodotto. Ad esempio, il workbench utilizza l'API per attivare l'abilitazione delle attività, ad esempio lo sviluppo Java. Di seguito viene riportato il modo in cui il workbench utilizza l'API generica delle attività per implementare i trigger.

L'hub di tutte le attività del workbench è IWorkbenchActivitySupport. Il supporto attività funziona insieme a IActivityManager. I plugin possono richiamare l'istanza del supporto attività e il gestore attività dal workbench dal workbench.

IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
Il frammento di seguito riportato consente l'attività di sviluppo Java (se non è già abilitata). Mostra una versione semplificata di un trigger.
...
//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 definisce inoltre il protocollo per la visualizzazione di tutti gli id delle attività e delle categorie definite e per la visualizzazione delle istanze IActivity o ICategory associate, relative a un determinato id. Questi oggetti possono essere utilizzati per trasferire la definizione di un'attività o di una categoria nell'API, ad esempio la visualizzazione delle associazioni modello o delle associazioni di requisiti. I listener possono essere registrati nel gestore attività o nelle attività o categorie, per individuare le modifiche nella definizione di una determinata attività o nel gestore attività. Per ulteriori informazioni, fare riferimento al pacchetto org.eclipse.ui.activities.