Výrazy s logickou hodnotou a filtry akcí

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.

Logické výrazy zpřístupnění

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:

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

viewActions,

editorActions,

actionSets

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.

popupMenus

(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.

Použití objectState s typy obsahu

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.