Die Aktivierung und/oder Sichtbarkeit einer Aktion kann mit den Elementen 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 Elemente enthalten nur ein Unterelement für den Booleschen Ausdruck. Im einfachsten Fall handelt es sich hierbei um ein Element objectClass, objectState, pluginState oder systemProperty. In komplexeren Angaben können die Elemente and, or und not zu einem Booleschen Ausdruck kombiniert werden. Sowohl das Element and als auch das Element or muss 2 Unterelemente enthalten. Das Element not darf lediglich 1 Unterelement enthalten.
<!ELEMENT extension (decorator*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT decorator (description? , enablement?)>
<!ATTLIST decorator
id CDATA #REQUIRED
label CDATA #REQUIRED
class CDATA #IMPLIED
objectClass CDATA #IMPLIED
adaptable (true | false)
state (true | false)
lightweight (true|false)
icon CDATA #IMPLIED
location (TOP_LEFT|TOP_RIGHT|BOTTOM_LEFT|BOTTOM_RIGHT|UNDERLAY) >
<!ELEMENT description (#PCDATA)>
Ein optionales Unterelement, dessen Hauptteil einen Text als Kurzbeschreibung des Dekorators enthalten sollte. Da dies auf der Seite für Benutzervorgaben des Dekorators angezeigt wird, empfiehlt es sich, dieses Element hinzuzufügen. Der Standardwert ist eine leere Zeichenfolge.
<!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. Damit ein solcher Ausdruckstyp ausgewertet wird, müssen alle Objekte in der Auswahl die Schnittstelle org.eclipse.ui.IActionFilter implementieren bzw. 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.
Zunächst ein vollständiger Dekorator. Der Plug-in-Entwickler muss die Imageunterstützung selbst verwalten.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.decorator"
label=
"XYZ Decorator"
state=
"true"
class=
"com.xyz.DecoratorContributor"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Nun ein Lightweightdekorator. Es gibt zwar eine konkrete Klasse, aber da es sich um ein Element "ILightweightLabelDecorator" handelt, muss lediglich Text und ein Element "ImageDescriptor" bereitgestellt werden, und es ist somit keine Ressourcenverarbeitung erforderlich.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.decorator"
label=
"XYZ Lightweight Decorator"
state=
"false"
class=
"com.xyz.LightweightDecoratorContributor"
lightweight=
"true"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Als Nächstes ein deklarierender Lightweightdekorator. Es gibt keine konkrete Klasse. Daher wird ein Symbol und ein Quadrant für die Anwendung des Symbols angegeben.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.declarative.decorator"
label=
"XYZ Lightweight Declarative Decorator"
state=
"false"
lightweight=
"true"
icon=
"icons/full/declarative.gif"
location=
"TOP_LEFT"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Copyright (c) 2002, 2004 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.