Décorateurs

org.eclipse.ui.decorators

2.0

Ce point d'extension sert à ajouter des décorateurs à des vues abonnées à un gestionnaire de décorateurs. Depuis la version 2.1 existe le concept de décorateur simplifié qui assure la gestion des images pour le décorateur. Il est également possible de déclarer un décorateur simplifié qui vient simplement recouvrir une icône lorsqu'activé et qui ne nécessite aucune implémentation du plug-in.

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) >


<!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.



L'exemple ci-dessous illustre des décorateurs :

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>

La valeur de l'attribut class doit correspondre au nom qualifié complet d'une classe implémentant org.eclipse.jface.viewers.ILabelDecorator (si lightweight a la valeur false) ou org.eclipse.jface.viewers.ILightweightLabelDecorator. Cette classe est chargée aussi tardivement que possible afin d'éviter le chargement du plug-in tout entier avant que cela ne soit réellement nécessaire. Les décorateurs déclaratifs n'entraînent aucune activation de plug-in et doivent être utilisés chaque fois que possible. Les décorateurs non simplifiés seront éventuellement à déconseiller.

Les plug-ins peuvent utiliser ce point d'extension pour ajouter des décorateurs à appliquer aux vues qui emploient le gestionnaire de décorateurs comme intitulé. Pour utiliser le gestionnaire de décorateurs, servez-vous du résultat d'IViewPart.getDecoratorManager() comme décorateur d'une instance de DecoratingLabelProvider. Cette fonctionnalité est utilisée par le navigateur de ressources.