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



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.