Vkládá-li modul plug-in akci do uživatelského rozhraní pracovní plochy s použitím některého z bodů rozšíření nabídky, může stanovit podmínky, při jejichž splnění se položka nabídky zobrazuje anebo zpřístupňuje. Kromě zadání jednoduchých podmínek zpřístupnění, např. počtu a tříd voleb, mohou moduly plug-in k zobrazování a skrývání akce používat z důvodu větší flexibility výrazy s logickou hodnotou.
Výrazy s logickou hodnotou mohou obsahovat logické operandy (NOT, AND a OR) kombinované s předdefinovanou syntaxí pro vyhodnocení určitých podmínek. Řada těchto podmínek testuje určitý objekt. Identita "objektu ve fokusu" (tj. testovaného) objektu závisí na specifickém kontextu výrazu zpřístupnění:
Při zadávání hodnoty, která má být testována těmito výrazy, se předpokládá, že jde o řetězec, pokud nejsou úspěšně provedeny následující převody:
Kompletní definice zpřístupňující syntaxe XML naleznete v referenční dokumentaci bodu jakéhokoli rozšíření, které definuje prvek enablement, tj. např. org.eclipse.ui.popupMenus.
Před verzí R3.0 nebyly tyto generalizované výrazy s logickou hodnotou k dispozici. Následující předdefinované výrazy se používají k vyhodnocování určitých podmínek bez sestavování obecných výrazů. Povšimněte si, že kterýkoli z těchto výrazů lze nyní vyjádřit s použitím generalizovanější syntaxe. Předdefinované výrazy lze nadále používat tímto způsobem:
objectClass - True, pokud je každý vybraný objekt podtřídou nebo implementací třídy.
objectState - True, pokud se uvedený atribut rovná uvedené hodnotě. IActionFilter se používá při vyhodnocování výrazu. Filtr akcí dynamicky vypočítává kritérium zpřístupnění pro akci na základě volby cíle a hodnoty uvedených atributů.
systemProperty - True, pokud je uvedená vlastnost systému rovna uvedené hodnotě.
pluginState - Určuje, zda má být (s použitím id) zadaný modul plug-in instalován nebo aktivován
Například následující úseky představují aktivační výrazy, které lze použít pro hypotetickou akci v akční sadě:
<action id="org.eclipse.examples.actionEnablement.class"
label="Red Element"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.ObjectTestAction">
<enablement>
<and>
<objectClass name="org.eclipse.examples.actionEnablement.TestElement"/>
<objectState name="name" value="red"/>
</and>
</enablement>
</action>
<action id="org.eclipse.examples.actionEnablement.property"
label="Property"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.PropertyTestAction">
<enablement>
<systemProperty name="MyTestProperty" value="puppy"/>
</enablement>
</action>
<action id="org.eclipse.examples.actionEnablement.pluginState"
label="Installed"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.PluginTestAction">
<enablement>
<pluginState id="x.y.z.anotherPlugin" value="installed"/>
</enablement>
</action>
Složitější ukázky těchto výrazů a kompletní popis XML naleznete v dokumentaci bodů rozšíření.
Následující tabulka uvádí seznam bodů rozšíření, které vkládají akce, a výčet způsobů použití atributů markupu XML a výrazů s logickou hodnotou k ovlivnění zpřístupnění.
|
Název bodu rozšíření |
Atributy ovlivňující aktivaci |
Výrazy s logickou hodnotou |
|---|---|---|
|
enablesFor - určuje počet voleb, jež musejí být splněny pro aktivaci akce selection class - třída, jejíž podtřídou nebo implementací zvolené objekty musí být, aby byla akce aktivována selection name - filtr se zástupným znakem lze použít pro volené objekty. |
visibility - výraz s logickou hodnotou. Určuje, zda se položka nabídky v nabídce zobrazuje. enablement - výraz s logickou hodnotou. Určuje, zda je položka nabídky v nabídce aktivní. Před uplatněním aktivačního výrazu musejí být naplněny atributyenablesFor, selection class a name. |
|
|
(Pouze pro vkládání objektů.) objectClass - určuje třídu, jejíž podtřídou nebo implementací musejí být volené objekty (Pro vkládání objektu i prohlížeče) enablesFor - určuje počet voleb, jež musejí být splněny pro aktivaci akce selection class - třída, jejíž podtřídou nebo implementací zvolené objekty musí být, aby byla akce aktivována selection name - filtr se zástupným znakem lze použít pro volené objekty.
|
(Pro vkládání objektu i prohlížeče) visibility - výraz s logickou hodnotou. Určuje, zda se položka nabídky v nabídce zobrazuje. enablement - výraz s logickou hodnotou. Určuje, zda je položka nabídky v nabídce aktivní. Před uplatněním aktivačního výrazu musejí být naplněny atributyenablesFor, selection class a name. |
Možnost definovat typy obsahu (viz Typy obsahu) lze kombinovat s výrazy s logickou hodnotou a definovat tak velmi složité podmínky zpřístupnění či zobrazování podle typu obsahu prostředku. Například následující úsek zobrazuje položku rozevírací nabídky pouze v případě, že se obsah zvoleného souboru shoduje s některým ze specializovaných typů obsahu modulu plug-in.
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.example.objectContributions"
objectClass="org.eclipse.core.resources.IFile"
nameFilter="*.xml">
<visibility>
<or>
<objectState
name="contentTypeId"
value="com.example.employeeRecordContentType"/>
<objectState
name="contentTypeId"
value="com.example.customerRecordContentType"/>
</or>
</visibility>
<action id="com.example.action1"
...
Atribut contentTypeId lze použít ve výrazu objectState ke kontrole typu obsahu zvoleného souboru XML. To modulu plug-in umožňuje uplatnit velmi specifickou kontrolu obsahu před aktivací či zobrazením akcí nabídky souvisejících se speciálními typy souborů. Další informace o rozšíření typu obsahu vizTypy obsahu.