Boolesche Ausdrücke und Aktionsfilter

Wenn ein Plug-in die Benutzerschnittstelle der Workbench durch eine Aktion ergänzt und hierzu einen der im Menü verfügbaren Erweiterungspunkte verwendet, können die Bedingungen angegeben werden, unter denen der Menüpunkt im Menü sichtbar und/oder aktiviert ist.  Zusätzlich zur Bereitstellung einfacher Aktivierungsbedingungen wie z. B. Auswahlzähler und -klassen können Plug-ins Boolesche Ausdrücke verwenden, um eine Aktion sichtbar oder aktiv zu machen.

Boolesche Ausdrücke

Die Booleschen Ausdrücke können einfache Boolesche Operatoren (NICHT, UND, ODER) sowie vordefinierte Ausdrücke umfassen, die zur Bewertung folgender Bedingungen verwendet werden:

Die folgenden Ausschnitte stellen z. B. Aktivierungsausdrücke dar, die für eine hypothetische Aktion in einem Aktionsset verwendet werden können:

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

Detailliertere Beispiele für diese Ausdrücke und eine vollständige Erläuterung zu XML finden Sie in den Referenzinformationen zu den nachstehenden Erweiterungspunkten.

In der folgenden Tabelle werden Erweiterungspunkte aufgelistet, die Aktionen hinzufügen. Darüber hinaus enthält diese Tabelle Informationen zur Verwendung von XML-Befehlsformatattributen und Booleschen Ausdrücken für die Aktivierung.

Name des Erweiterungspunkts

Attribute mit Auswirkungen auf die Aktivierung

Boolesche Ausdrücke

viewActions,

editorActions,

actionSets

enablesFor - Gibt den Auswahlzähler an, den eine Aktion erreichen muss, um als aktiviert identifiziert zu werden.

selection class - Die Klasse, die die ausgewählten Objekte weiter unterteilen oder implementieren müssen, damit die Aktion aktiviert wird.

selection name - Ein Filter mit Platzhalterzeichen, der auf die Objekte in der Auswahl angewendet werden kann.

visibility - ein Boolescher Ausdruck. Steuert, ob die Menüoption im Menü sichtbar ist.

enablement - Ein Boolescher Ausdruck. Steuert, ob die Menüoption im Menü aktiviert ist.  Die Bedingungen des Attributs enablesFor und der Parameter selection, class und name müssen erfüllt werden, bevor der Aktivierungsausdruck angewendet wird.

popupMenus

(Nur für Objektergänzungen.)

objectClass - Gibt die Klasse an, die die Objekte in der Auswahl weiter unterteilen oder implementieren müssen.

(Für Objekt- und Anzeigefunktionsergänzungen.)

enablesFor - Gibt den Auswahlzähler an, den eine Aktion erreichen muss, um als aktiviert identifiziert zu werden.

selection class - Die Klasse, die die ausgewählten Objekte weiter unterteilen oder implementieren müssen, um eine Aktion zu aktivieren.

selection name - Ein Filter mit Platzhalterzeichen, der auf die Objekte in der Auswahl angewendet werden kann.

 

(Für Objekt- und Anzeigefunktionsergänzungen.)

visibility - ein Boolescher Ausdruck. Steuert, ob die Menüoption im Menü sichtbar ist.

enablement - Ein Boolescher Ausdruck. Steuert, ob die Menüoption im Menü aktiviert ist.  Die Bedingungen des Attributs enablesFor und der Parameter selection, class und name müssen erfüllt werden, bevor der Aktivierungsausdruck angewendet wird.

Verwendung von objectState mit Inhaltstypen

Die Fähigkeit, Inhaltstypen zu definieren (siehe Inhaltstypen) kann mit Booleschen Ausdrücken kombiniert werden, um sehr spezielle Aktivierungs- oder Sichtbarkeitsbedingungen auf Basis des Inhaltstyps einer Ressource zu definieren. Der folgende Ausschnitt lässt beispielsweise einen Kontextmenüeintrag nur dann sichtbar werden, wenn der Inhalt der ausgewählten Datei mit den speziellen Inhaltstypen des Plug-ins übereinstimmt.

<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"
         ...
Das Attribut contentTypeId kann in einem Ausdruck objectState verwendet werden, um den Inhaltstyp einer ausgewählten XML-Datei zu überprüfen. Hierdurch kann ein Plug-in eine sehr spezifische Inhaltsüberprüfung durchführen, bevor es Menüaktionen, die mit bestimmten Dateitypen zusammenhängen, aktiviert oder anzeigt. Weitere Details über Inhaltstyperweiterungen finden Sie unter Inhaltstypen.

Rechtshinweise.