Descrizione: questo punto di estensione consente di aggiungere azioni al menu a discesa e alla barra degli strumenti delle viste registrate da altri plug-in. Ogni vista dispone di un menu a discesa, che viene attivato facendo clic sul pulsante a triangolo in alto a destra. Altri plug-in possono poi aggiungere sottomenu e azioni a questo menu o alla barra degli strumenti di una vista. Chi utilizza una vista ha la precedenza nella definizione del contenuto di queste aree. Le ulteriori aggiunte dei plug-in costituiscono un elemento opzionale.
L'abilitazione e/o la visibilità di una azione possono essere definite utilizzando rispettivamente gli elementi enablement e visibility. Questi due elementi contengono un'espressione booleana valutata per stabilire l'abilitazione e/o la visibilità.
La sintassi per gli elementi enablement e visibility è uguale. Entrambi contengono un elemento secondario con espressione booleana. Nel caso più semplice, sarà un elemento objectClass, objectState, pluginState o systemProperty. Nei casi più complessi, gli elementi and, or e not saranno combinati per creare espressioni booleane. Sia l'elemento and che l'elemento or devono contenere 2 elementi secondari. L'elemento not deve contenere un solo elemento secondario.
Tag di configurazione:
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA
#IMPLIED
name CDATA
#IMPLIED
>
<!ELEMENT viewContribution (menu* , action*)>
Questo elemento è utilizzato per definire un gruppo di azioni e/o menu della vista.
<!ATTLIST viewContribution<!ELEMENT action (selection* | enablement?)>
Questo elemento definisce un'azione che l'utente può richiamare dall'interfaccia utente.
<!ATTLIST actionpush | - una normale voce di menu o della barra degli strumenti. | |
radio | - una voce di menu o della barra degli strumenti di tipo pulsante di opzione. Le azioni con questo stile all'interno di uno stesso menu o barra degli strumenti si comportano come gruppi di opzioni. Il valore iniziale è specificato dall'attributo state. | |
toggle | - una voce di menu di tipo casella di controllo o una voce della barra degli strumenti di tipo attivazione/disattivazione. Il valore iniziale è specificato dall'attributo state. |
! | - nessun elemento selezionato | |
? | - nessuno o un solo elemento selezionato | |
+ | - 1 o più elementi selezionati | |
multiple, 2+ | - 2 o più elementi selezionati | |
n | - un determinato numero di elementi selezionati. Ad esempio: enablesFor=" 4" abilita l'azione solo se sono selezionati 4 elementi | |
* | - un qualsiasi numero di elementi selezionati |
<!ELEMENT menu (separator+ , groupMarker*)>
Questo elemento è utilizzato per definire un nuovo menu.
<!ATTLIST menu<!ELEMENT separator EMPTY>
Questo elemento è utilizzato per creare un separatore di menu nel nuovo menu.
<!ATTLIST separator<!ELEMENT groupMarker EMPTY>
Questo elemento è utilizzato per creare un gruppo denominato nel nuovo menu. A differenza dell'elemento separator, questo non dispone di una rappresentazione visiva.
<!ATTLIST groupMarker<!ELEMENT selection EMPTY>
Questo elemento è utilizzato nella determinazione dell'abilitazione dell'azione in base alla selezione corrente. Viene ignorato se è specificato l'elemento enablement.
<!ATTLIST selection<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento è utilizzato per definire l'abilitazione dell'azione.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento è utilizzato per definire la visibilità dell'azione.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento rappresenta un'operazione booleana AND sul risultato della valutazione delle due espressioni secondarie.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento rappresenta un'operazione booleana OR sul risultato della valutazione delle due espressioni secondarie.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento rappresenta un'operazione booleana NOT sul risultato della valutazione delle due espressioni secondarie.
<!ELEMENT objectClass EMPTY>
Questo elemento è utilizzato per valutare la classe o l'interfaccia di ciascun oggetto nella selezione corrente. Se ciascun oggetto nella selezione implementa la classe o interfaccia specificata, l'espressione è considerata verificata.
<!ATTLIST objectClass<!ELEMENT objectState EMPTY>
Questo elemento è utilizzato per valutare lo stato dell'attributo di ciascun oggetto nella selezione corrente. Se ciascun oggetto nella selezione presenta lo stato dell'attributo specificato, l'espressione è considerata verificata. Per valutare questo tipo di espressione, tutti gli oggetti della selezione devono implementare o adattarsi all'interfaccia org.eclipse.ui.IActionFilter.
<!ATTLIST objectState<!ELEMENT pluginState EMPTY>
Questo elemento è utilizzato per valutare lo stato di un plug-in. Lo stato di un plug-in può assumere i valori installed o activated.
<!ATTLIST pluginState<!ELEMENT systemProperty EMPTY>
Questo elemento è utilizzato per valutare lo stato delle proprietà di un sistema. Il valore della proprietà è richiamato da java.lang.System.
<!ATTLIST systemProperty
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ" label="&Run XYZ Tool" menubarPath="com.xyz.xyzMenu/group1" toolbarPath="Normal/additions" style="toggle" state="true" icon="icons/runXYZ.gif" tooltip="Run XYZ Tool" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.RunXYZ"> <selection class="org.eclipse.core.resources.IFile" name="*.java"/> </action> </viewContribution> </extension>
Nell'esempio sopra riportato, l'azione specificata viene abilitata per una sola selezione (l'attributo enablesFor). Inoltre, ogni oggetto della selezione deve essere una risorsa file Java.
Di seguito è riportato un altro esempio di punto di estensione per un'azione di visualizzazione:
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ2" label="&Run XYZ2 Tool" menubarPath="com.xyz.xyzMenu/group1" style="push" icon="icons/runXYZ2.gif" tooltip="Run XYZ2 Tool" helpContextId="com.xyz.run_action_context2" class="com.xyz.actions.RunXYZ2"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <not> <objectState name="extension" value="java"/> </not> </and> </enablement> </action> </editorContribution> </extension>
Nell'esempio sopra riportato, l'azione specificata viene visualizzata come una voce di menu. Questa azione è abilitata se la selezione contiene solo risorse file Java.
Informazione API: il valore dell'attributo class deve essere un nome completo di una classe Java che implementi org.eclipse.ui.IViewActionDelegate. Questa classe viene caricata per ultima, in modo da evitare il caricamento dell'intero plug-in prima del necessario.
L'interfaccia org.eclipse.ui.IViewActionDelegate estende org.eclipse.ui.IActionDelegate e aggiunge un metodo supplementare che consente al delegato l'inizializzazione con l'istanza della vista in cui interviene.
Questo punto di estensione può essere utilizzato per contribuire con azioni ai menu precedentemente creati dalla vista di destinazione. Se l'attributo path viene omesso, il nuovo menu o azione viene aggiunto alla fine del menu a discesa.
I criteri di abilitazione per l'estensione di un'azione sono inizialmente definiti da enablesFor e da uno tra selection e enablement. Tuttavia, dopo aver creato l'istanza di gestione dell'azione, è possibile controllare lo stato di abilitazione dell'azione utilizzando direttamente il relativo metodo selectionChanged.
L'utente può includere nelle etichette delle azioni e dei menu caratteri speciali, che codificano tasti di scelta utilizzando le seguenti regole:
Gli elementi selection e enablement sono mutualmente esclusivi. L'elemento enablement può sostituire l'elemento selection se si utilizzano gli elementi secondari objectClass e objectState. Ad esempio:
<selection class="org.eclipse.core.resources.IFile" name="*.java"> </selection>può essere espresso utilizzando:
<enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <objectState name="extension" value="java"/> </and> </enablement>
Implementazione fornita: ogni vista viene normalmente fornita con alcuni elementi standard sul menu a discesa e nella barra degli strumenti locale. Le aggiunte da altri plug-in saranno poste in coda al complemento standard.
Copyright (c) 2000, 2003 IBM Corporation e altri.
Tutti i diritti riservati. Questo programma e il materiale di accompagnamento
sono disponibili secondo i termini della Common Public License v1.0 che sono
distribuiti con il prodotto, e disponibili all'indirizzo
http://www.eclipse.org/legal/cpl-v10.html