Zpřístupnění nebo viditelnost zvolené akce lze nastavit pomocí příslušného prvku enablement nebo visibility. Tyto dva prvky obsahují logický výraz, který je vyhodnocen pro stanovení zpřístupnění (enablement) anebo viditelnosti (visibility).
Syntaxe je stejná jak pro prvek enablement, tak i pro prvek visibility. Oba obsahují pouze jeden dílčí prvek logického výrazu. V nejjednodušším případě to bude prvek objectClass, objectState, pluginState nebo systemProperty. V komplexnějších případech mohou být kombinovány prvky and, or a not pro vytvoření logického výrazu. Prvky and a or musí obsahovat 2 dílčí prvky. Prvek not musí obsahovat pouze 1 dílčí prvek.
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Tento prvek se používá k definování skupiny akcí nebo nabídek pohledu.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
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) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED>
Tento prvek definuje akci, kterou může uživatel vyvolat v uživatelském rozhraní.
push | - Jako běžná položka nabídky nebo panelu nástrojů. | |
radio | - Jako položka nabídky nebo panelu nástrojů stylu výběrového tlačítka. Akce se stylem výběrového tlačítka v rámci stejné skupiny nabídky nebo panelu nástrojů se chovají jako sada výběrových tlačítek. Výchozí hodnota je určena atributem state. | |
toggle | - Jako zaškrtávací položka nabídky nebo přepínací položka panelu nástrojů. Výchozí hodnota je určena atributem state. |
! | - vybráno 0 položek | |
? | - vybráno 0 nebo 1 položka | |
+ | - vybráno 1 nebo více položek | |
více, 2+ | - vybráno 2 nebo více položek | |
n | - vybrán přesný počet položek Například: enablesFor=" 4" zpřístupní akci pouze v případě, pokud budou vybrány 4 položky | |
* | - vybrán libovolný počet položek |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Tento prvek se používá pro definování nové nabídky.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Tento prvek se používá pro vytváření oddělovače nabídky v nové nabídce.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Tento prvek se používá pro vytváření pojmenované skupiny v nové nabídce. Na rozdíl od prvku separator nemá žádné vizuální znázornění v nové nabídce.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Tento prvek se používá pro usnadnění zjištění, zda je akce zpřístupněna na základě aktuálního výběru. Prvek je ignorován, pokud je zadán prvek enablement.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Tento prvek se používá k definování zpřístupnění pro rozšíření.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Tento prvek se používá k definování viditelnosti pro rozšíření.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Tento prvek představuje logickou operaci AND na výsledku vyhodnocení dvou výrazů jeho dílčích prvků.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Tento prvek představuje logickou operaci OR na výsledku vyhodnocení dvou výrazů jeho dílčích prvků.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Tento prvek představuje logickou operaci NOT na výsledku vyhodnocení výrazů jeho dílčích prvků.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Tento prvek se používá pro vyhodnocení třídy nebo rozhraní každého objektu v aktuálním výběru. Pokud každý objekt ve výběru implementuje zadanou třídu nebo rozhraní, je výraz vyhodnocen jako true.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Tento prvek se používá pro vyhodnocení stavu atributu každého objektu v aktuálním výběru. Pokud má každý objekt ve výběru zadaný stav atributu, je výraz vyhodnocen jako pravdivý (true). Aby bylo možné vyhodnotit tento typ výrazu, musí se každý objekt ve výběru implementovat nebo přizpůsobit rozhraní org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Tento prvek se používá pro vyhodnocení stavu modulu plug-in. Stav modulu plug-in může být jeden z následujících: instalován (ekvivalentní stavu "vyřešený" v rámci konceptu OSGi) nebo aktivován (ekvivalentní stavu "aktivní" v rámci konceptu OSGi).
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Tento prvek se používá pro vyhodnocení stavu některé vlastnosti systému. Hodnota vlastnosti je získána z java.lang.System.
<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>
Ve výše uvedeném příkladu zvolená akce umožňuje pouze jediný výběr (atribut enablesFor). Navíc musí být zvolený objekt souborový prostředek jazyka Java.
Následuje další příklad rozšíření akce pohledu:
<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>
</viewContribution>
</extension>
Ve výše uvedeném příkladu se uvedená akce zobrazí jako položka nabídky. Akce bude zpřístupněna, pokud výběr neobsahuje žádné prostředky souboru Java.
Rozhraní org.eclipse.ui.IViewActionDelegate rozšiřuje org.eclipse.ui.IActionDelegate a přidává další metodu, která umožňuje delegátovi inicializovat se s instancí pohledu, ke které přispívá.
Tento bod rozšíření lze použít k přispívání akcí do nabídek, které byly již dříve vytvořeny cílovým pohledem. Pokud není atribut cesty k nabídce zadán, bude nová nabídka či akce přidána na konec rozevírací nabídky.
Kritérium zpřístupnění rozšíření akce je zpočátku definováno parametrem enablesFor, a rovněž buď parametrem selection, nebo enablement. Jakmile je ovšem konkretizován delegát akce, může tento delegát řídit stav zpřístupnění akce přímo v rámci své metody selectionChanged.
Štítky akcí a nabídek mohou obsahovat speciální znaky se zakódovanou mnemotechnikou, pomocí následujících pravidel:
Prvky selection a enablement se navzájem vylučují. Prvek enablement může nahradit prvek selection pomocí dílčích prvků objectClass a objectState. Například následující:
lze vyjádřit pomocí:<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>
Copyright (c) 2002, 2005 IBM Corporation a další.
Všechna práva vyhrazena.
Tento program a doprovodné materiály jsou zpřístupněny za podmínek licence Eclipse Public License
v1.0, která je součástí této distribuce a je k dispozici na adrese
http://www.eclipse.org/legal/epl-v10.html