L'activation et/ou visibilité d'une action se définissent respectivement à l'aide des éléments enablement et visibility. Ces deux éléments contiennent une expression booléenne qui entraîne l'activation et/ou la visibilité.
La syntaxe des éléments enablement et visibility est identique. Ils contiennent chacun un unique sous-élément d'expression booléenne. Dans les cas les plus simples, il s'agit d'un élément objectClass, objectState, pluginState ou systemProperty. Dans les cas plus complexes, les éléments and, or et not peuvent être combinés pour former une expression booléenne. Les éléments and et or doivent chacun contenir 2 sous-éléments. L'élément not ne doit en contenir qu'un.
<!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)>
sous-élément facultatif dont le corps doit contenir une brève description du décorateur. Comme il apparaîtra dans la page de préférences Décorateurs, il est conseillé de l'inclure. La valeur par défaut est une chaîne vide.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément est employé pour définir l'activation pour l'extension.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément est employé pour définir la visibilité pour l'extension.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne AND sur le résultat de l'évaluation des expressions de ses deux sous-éléments.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne OR sur le résultat de l'évaluation des expressions de ses deux sous-éléments.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne NOT sur le résultat de l'évaluation des expressions de ses sous-éléments.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Cet élément est employé pour évaluer la classe ou l'interface de chaque objet dans la sélection en cours. Si chaque objet de la sélection implémente la classe ou l'interface spécifiée, l'expression est considérée vraie.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Cet élément est employé pour évaluer l'état d'attribut de chaque objet dans la sélection en cours. Si chaque objet de la sélection présente l'état d'attribut spécifié, l'expression est considérée vraie. Pour évaluer ce type d'expression, chaque objet de la sélection doit implémenter (ou s'adapter à) l'interface org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Cet élément est employé pour évaluer l'état d'un plug-in. L'état du plug-in peut être soit installed (équivalent au concept OSGi "resolved"), soit activated (équivalent au concept OSGi "active").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Cet élément est employé pour évaluer l'état d'une propriété système. La valeur de la propriété système est déterminée en appelant java.lang.System.
Un décorateur complet. Les développeurs de plug-in doivent gérer leur propre support d'image.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.decorator"
label=
"Décorateur XYZ"
state=
"true"
class=
"com.xyz.DecoratorContributor"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Un décorateur simplifié. Il existe une classe concrète mais comme il s'agit d'un décorateur ILightweightLabelDecorator, il suffit de fournir du texte et un ImageDescriptor sans gestion de ressource.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.decorator"
label=
"Décorateur simplifié XYZ"
state=
"false"
class=
"com.xyz.LightweightDecoratorContributor"
lightweight=
"true"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Un décorateur simplifié déclaratif. Comme il n'existe pas de classe, une icône et un quadrant à appliquer à cette icône sont fournis.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.declarative.decorator"
label=
"Décorateur simplifié déclaratif XYZ"
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 and others.
All rights reserved. Ce programme et les produits associés sont
distribués sous licence v1.0 et disponibles à
l'adresse suivante :
http://www.eclipse.org/legal/epl-v10.html