Die Aktivierung und/oder Sichtbarkeit einer Aktion kann durch die Elemente enablement bzw. visibility definiert werden. Diese beiden Elemente enthalten einen Booleschen Ausdruck, dessen Auswertung die Aktivierung und/oder Sichtbarkeit bestimmt.
Die Syntax ist für beide Elemente enablement und visibility identisch. Beide enthalten nur ein Unterelement mit einem Booleschen Ausdruck. Im einfachsten Fall ist dies ein Element objectClass, objectState, pluginState oder systemProperty. In komplexeren Fällen können die Elemente and, or und not kombiniert werden und so einen Booleschen Ausdruck bilden. Sowohl das Element and als auch das Element or muss zwei Unterelemente enthalten. Das Element not darf nur 1 Unterelement enthalten.
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Mit diesem Element wird eine Gruppe von Aktionen und/oder Menüs für eine Sicht definiert.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED>
Dieses Element definiert eine Aktion, die der Benutzer in der Benutzerschnittstelle aufrufen kann.
push | - Die Aktion wird als normale Menüoption oder als normales Symbolleistenelement dargestellt. | |
radio | - Die Aktion wird im Menü oder in der Symbolleiste als Optionsfeld dargestellt. Aktionen mit dieser Darstellung, die zur gleichen Menü- oder Symbolleistengruppe gehören, verhalten sich wie eine Optionsfeldgruppe. Der Anfangswert wird durch das Attribut state angegeben. | |
toggle | - Die Aktion wird als mit einem Haken markierte Menüoption oder als Umschaltelement in der Symbolleiste dargestellt. Der Anfangswert wird durch das Attribut state angegeben. |
! | - 0 ausgewählte Elemente | |
? | - 0 oder 1 ausgewählte Elemente | |
+ | - 1 oder mehr ausgewählte Elemente | |
multiple, 2+ | - 2 oder mehr ausgewählte Elemente | |
n | - Eine genaue Anzahl ausgewählter Elemente. Bei der Angabe 'enablesFor=" 4" wird die Aktion beispielsweise nur dann aktiviert, wenn 4 Elemete ausgewählt sind. | |
* | - Beliebig viele ausgewählte Elemente |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Mit diesem Element wird ein neues Menü definiert.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Mit diesem Element wird im neuen Menü ein Menütrennzeichen erstellt.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Mit diesem Element wird im neuen Menü eine benannte Gruppe erstellt. Anders als das Element separator gibt es für dieses Element im neuen Menü keine sichtbare Darstellung.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Mit diesem Element wird die Aktionsaktivierung anhand der aktuellen Auswahl ermittelt. Es wird ignoriert, wenn das Element enablement angegeben ist.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Mit diesem Element wird die Aktivierung der Erweiterung definiert.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Mit diesem Element wird die Sichtbarkeit für die Erweiterung definiert.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dieses Element stellt eine Boolesche Operation AND für das Ergebnis der Auswertung seiner beiden Unterelementausdrücke dar.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dieses Element stellt eine Boolesche Operation OR für das Auswertungsergebnis seiner beiden Unterelementausdrücke dar.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dieses Element stellt eine Boolesche Operation NOT für das Ergebnis der Auswertung seiner Unterelementausdrücke dar.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Mit diesem Element wird die Klasse oder Schnittstelle jedes Objektes in der aktuellen Auswahl ausgewertet. Wenn alle Objekte in der Auswahl die angegebene Klasse oder Schnittstelle implementieren, wird der Ausdruck mit dem Ergebnis "true" ausgewertet.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Mit diesem Element wird der Attributstatus jedes Objektes in der aktuellen Auswahl ausgewertet. Wenn alle Objekte in der Auswahl den angegebenen Attributstatus aufweisen, wird der Ausdruck mit dem Ergebnis "true" ausgewertet. Zur Auswertung dieses Typs Ausdruck muss jedes Objekt in der Auswahl die Schnittstelle org.eclipse.ui.IActionFilter implementieren oder ihr zugeordnet sein.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Mit diesem Element wird der Status eines Plug-ins ausgewertet. Der Status des Plug-ins kann installed (entspricht dem OSGi-Konzept 'resolved') oder activated (entspricht dem OSGi-Konzept 'active') lauten.
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Mit diesem Element wird der Status einer bestimmten Systemeigenschaft ausgewertet. Der Eigenschaftswert wird aus java.lang.System abgerufen.
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</viewContribution>
</extension>
Im oben dargestellten Beispiel wird die angegebene Aktion nur bei einer Einzelauswahl aktiviert (Attribut enablesFor). Außerdem muss das Objekt in der Auswahl eine Java-Dateiressource sein.
Das nächste Beispiel zeigt ebenfalls eine Erweiterung für eine Sichtaktion.
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"&Run XYZ2 Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"Run XYZ2 Tool"
helpContextId=
"com.xyz.run_action_context2"
class=
"com.xyz.actions.RunXYZ2"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
</viewContribution>
</extension>
In diesem Beispiel wird die angegebene Aktion als Menüoption angezeigt. Die Aktion ist aktiviert, wenn die Auswahl keine Java-Dateiressourcen enthält.
Die Schnittstelle org.eclipse.ui.IViewActionDelegate erweitert org.eclipse.ui.IActionDelegate und fügt eine zusätzliche Methode hinzu, mit deren Hilfe der Stellvertreter mit dem Exemplar der Sicht initialisiert werden kann, für die die Ergänzung definiert ist.
An diesem Erweiterungspunkt können Aktionen in Menüs ergänzt werden, die zuvor durch die Zielsicht erstellt wurden. Wenn das Attribut für den Menüpfad nicht angegeben wird, wird das neue Menü bzw. die neue Aktion am Ende des Pulldown-Menüs hinzugefügt.
Die Aktivierungsbedingungen für eine Aktionserweiterung sind anfänglich durch enablesFor definiert, und ebenfalls durch selection oder enablement. Sobald der Aktionsstellvertreter als Exemplar erstellt wurde, kann er jedoch den Aktivierungsstatus der Aktion direkt in seiner Methode selectionChanged steuern.
Aktions- und Menübezeichnungen können Sonderzeichen enthalten und mnemonische Zeichen codieren. Hierbei gelten die folgenden Regeln:
Die Elemente selection und enablement schließen sich gegenseitig aus. Das Element enablement kann das Element selection unter Verwendung der Unterelemente objectClass und objectState ersetzen. Die Angabe
könnte beispielsweise auch folgendermaßen ausgedrückt werden:<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
Copyright (c) 2002, 2005 IBM Corporation und Andere.
Alle Rechte vorbehalten. Dieses Programm und sein Begleitmaterial werden gemäß den Bedingungen der "Eclipse Public License v1.0" zur Verfügung gestellt, die dieser Lieferung beiliegt und unter
http://www.eclipse.org/legal/epl-v10.html abgerufen werden kann.