L'activation et/ou la visibilité d'une action peuvent être définies respectivement à l'aide des éléments enablement et visibility. Ces deux éléments contiennent une expression booléenne qui est évaluée pour déterminer l'activation et/ou la visibilité.
La syntaxe utilisée pour les éléments enablement et visibility est la même. Ils contiennent tous deux un seul sous-élément d'expression booléenne. Dans le cas le plus simple, il s'agira d'un élément objectClass, objectState, pluginState ou systemProperty. Dans le cas le plus complexe, les éléments and, or et not peuvent être combinés pour former une expression booléenne. Les éléments and et or doivent contenir chacun deux sous-éléments. L'élément not doit uniquement contenir un sous-élément.
<!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) >
IDecoratorManager#update()
.<!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 d'évaluation de ses deux expressions de 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 d'évaluation de ses deux expressions de 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 d'évaluation de ses expressions de 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 comme vraie ("true").
<!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 possède l'état d'attribut spécifié, l'expression est considérée comme vraie ("true"). Pour évaluer ce type d'expression, chaque objet de la sélection doit implémenter l'interface org.eclipse.ui.IActionFilter ou s'y adapter.
<!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 l'un des suivants : installé (équivalent au concept "resolved" d'OSGi) ou activé (équivalent au concept "active" d'OSGi).
<!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é est extraite de 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