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 größere Flexibilität bei der Festlegung, ob eine Aktion sichtbar oder aktiviert sein soll, zu bieten.
Die Booleschen Ausdrücke können einfache Boolesche Operatoren (NICHT, UND, ODER), kombiniert mit einer vordefinierten Syntax für die Bewertung bestimmter Bedingungen enthalten. Viele dieser Bedingungen testen ein bestimmtes Objekt. Die Identität des "betrachteten Objekts" (des Objekts, das getestet wird) hängt von dem spezifischen Kontext des Aktivierungsausdrucks ab:
Wenn ein Wert angegeben wird, der gegen einen dieser Ausdrücke zu testen ist, wird angenommen, dass es sich bei diesem Wert um eine Zeichenfolge handelt, außer wenn die folgenden Konvertierungen erfolgreich sind:
Eine vollständige Definition der Aktivierungs-XML-Syntax finden Sie in der Referenzdokumentation für den Erweiterungspunkt für jede Erweiterung, die ein enablement-Element, wie z.B. org.eclipse.ui.popupMenus definiert.
Vor dem release R3.0 standen diese verallgemeinerten Booleschen Ausdrücke nicht zur Verfügung. Die folgenden vordefinierten Ausdrücke wurden verwendet, um bestimmte Bedingungen zu beurteilen, ohne einen allgemeinen Ausdruck zu erstellen. Beachten Sie, dass alle diese Ausdrücke jetzt mit der mehr verallgemeinerten Syntax ausgedrückt werden können. Die vordefinierten Ausdrücke können immer noch wie folgt verwendet werden:
objectClass - Wahr, wenn alle Objekte in der Auswahl die Klasse weiter unterteilen oder implementieren.
objectState - Wahr, wenn das benannte Attribut dem angegebenen Wert entspricht. IActionFilter unterstützt die Bewertung des Ausdrucks. Ein Aktionsfilter dient zur dynamischen Ermittlung der Aktivierungskriterien für eine Aktion auf der Basis der Zielauswahl und des Wertes der benannten Attribute.
systemProperty - Wahr, wenn die benannte Systemeigenschaft dem angegebenen Wert entspricht.
pluginState - Gibt an, ob das (über id) angegebene Plug-in installiert oder aktiviert werden soll.
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 |
---|---|---|
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. |
|
(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. |
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.