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.
<!ELEMENT extension (actionSet+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT actionSet (menu* , action*)>
<!ATTLIST actionSet
id CDATA #REQUIRED
label CDATA #REQUIRED
visible (true | false)
description CDATA #IMPLIED>
Questo elemento è utilizzato per definire un gruppo di azioni e/o menu.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
accelerator CDATA #IMPLIED
definitionId CDATA #IMPLIED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle|pulldown) "push"
state (true | false)
pulldown (true | false)
class CDATA #IMPLIED
retarget (true | false)
allowLabelUpdate (true | false)
enablesFor CDATA #IMPLIED>
Questo elemento definisce un'azione che l'utente può richiamare dall'interfaccia utente.
push | - 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. | |
pulldown | - una voce di menu di tipo sovrapposto o un menu a discesa associato alla voce della barra degli strumenti. |
! | - 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*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Questo elemento è utilizzato per definire un nuovo menu.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Questo elemento è utilizzato per creare un separatore di menu nel nuovo menu.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Questo elemento è utilizzato per creare un gruppo denominato nel nuovo menu. A differenza dell'elemento separator, questo non dispone di una rappresentazione visiva.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Questo elemento è utilizzato nella determinazione dell'abilitazione dell'azione in base alla selezione corrente. Viene ignorato se è specificato l'elemento enablement.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento è utilizzato per definire l'abilitazione per l'estensione.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Questo elemento è utilizzato per definire la visibilità per l'estensione.
<!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 sue espressioni secondarie.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
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.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
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.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Questo elemento è utilizzato per valutare lo stato di un plugin. Lo stato di un plugin può assumere i valori installed (equivalente al concetto OSGi di "resolved") o activated (equivalente al concetto OSGi di "active").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Questo elemento è utilizzato per valutare lo stato delle proprietà di un sistema. Il valore della proprietà è richiamato da java.lang.System.
<extension point =
"org.eclipse.ui.actionSets"
>
<actionSet id=
"com.xyz.actionSet"
label=
"My Actions"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
<separator name=
"option1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
style=
"toggle"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/group1"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
enablesFor=
"1"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
<action id=
"com.xyz.runABC"
label=
"&Run ABC Tool"
style=
"push"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/XYZ"
icon=
"icons/runABC.gif"
tooltip=
"Run ABC Tool"
helpContextId=
"com.xyz.run_abc_action_context"
retarget=
"true"
allowLabelUpdate=
"true"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
<action id=
"com.xyz.runDEF"
label=
"&Run DEF Tool"
style=
"radio"
state=
"true"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runDEF.gif"
tooltip=
"Run DEF Tool"
class=
"com.xyz.actions.RunDEF"
helpContextId=
"com.xyz.run_def_action_context"
>
</action>
<action id=
"com.xyz.runGHI"
label=
"&Run GHI Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runGHI.gif"
tooltip=
"Run GHI Tool"
class=
"com.xyz.actions.RunGHI"
helpContextId=
"com.xyz.run_ghi_action_context"
>
</action>
<action id=
"com.xyz.runJKL"
label=
"&Run JKL Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runJKL.gif"
tooltip=
"Run JKL Tool"
class=
"com.xyz.actions.RunJKL"
helpContextId=
"com.xyz.run_jkl_action_context"
>
</action>
</actionSet>
</extension>
Nell'esempio sopra riportato, l'insieme di azioni specificato, denominato "My Actions", può inizialmente essere visualizzato in ciascuna prospettiva in quanto non è specificato l'attributo visible.
L'azione XYZ apparirà come una casella di controllo non selezionata. Sarà abilitata solo se il numero di selezione è 1 e la selezione contiene una risorsa file Java.
L'azione ABC apparirà sia nel menu che nella barra degli strumenti. Sarà abilitata solo se la selezione non contiene alcuna risorsa file Java. Si noti anche che questa è un'azione di etichetta retarget e pertanto non fornisce un attributo class.
Le azioni DEF, GHI e JKL appariranno come pulsanti di opzione. Questi saranno sempre abilitati, indipendentemente dallo stato di selezione corrente.
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.
Si osservi che il workbench non genera menu per conto del plugin; i percorsi di menu devo fare riferimento a menu già esistenti.
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:
può essere espresso utilizzando:<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
I menu di livello superiore vengono creati utilizzando per l'attributo path i seguenti valori:
I gruppi predefiniti di una finestra del workbench sono definiti nell'interfaccia IWorkbenchActionConstants. È possibile utilizzare queste costanti nel codice per il contributo dinamico. È anche possibile copiare i valori in un file XML per integrarli in maniera precisa con i menu e la barra degli strumenti presenti sul workbench.
Diversi elementi del menu e della barra degli strumenti presenti nella finestra del workbench sono definiti mediante algoritmi. In questi casi, è necessario utilizzare un meccanismo separato per estendere la finestra. Ad esempio, l'aggiunta di una nuova vista del workbench determina la visualizzazione di un nuovo elemento nel menu Prospettiva. Anche le estensioni relative a Importazione, Esportazione e Nuove procedure guidate vengono aggiunte automaticamente alla finestra.
Copyright (c) 2000, 2004 IBM Corporation e altri.
Tutti i diritti riservati. Questo programma e il materiale di accompagnamento sono
disponibili secondo i termini della Eclipse Public License v1.0 che sono distribuiti con il prodotto, e disponibili all'indirizzo
http://www.eclipse.org/legal/epl-v10.html