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.