Decoratori

org.eclipse.ui.decorators

Versione 2.0

Questo punto di estensione viene utilizzato per aggiungere decoratori alle viste che sottoscrivono un gestore decoratori. Dalla versione 2.1 è stato introdotto un decoratore semplificato per gestire l'immagine. È anche possibile dichiarare un decoratore semplificato che si sovrappone semplicemente alle icone e che non richiede implementazioni dal plugin.

L'abilitazione e/o la visibilità di una azione possono essere definite utilizzando rispettivamente gli elementi enablement e visibility. Questi due elementi contengono un'espressione booleana valutata per stabilire l'abilitazione e/o la visibilità.

La sintassi per gli elementi enablement e visibility è uguale. Entrambi contengono un elemento secondario con espressione booleana. Nel caso più semplice, sarà un elemento objectClass, objectState, pluginState o systemProperty. Nei casi più complessi, gli elementi and, or e not saranno combinati per creare espressioni booleane. Sia l'elemento and che l'elemento or devono contenere 2 elementi secondari. L'elemento not deve contenere un solo elemento secondario.

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

un elemento secondario facoltativo che deve contenere nel relativo corpo una breve descrizione del decoratore. Si consiglia di includerlo perché sarà visualizzato nella pagina delle preferenze relativa ai decoratori. Il valore predefinito è costituito una stringa vuota.



<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>

Questo elemento è utilizzato per definire l'abilitazione per l'estensione.



<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>

Questo elemento è utilizzato per definire la visibilità per l'estensione.



<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>

Questo elemento rappresenta un'operazione booleana AND sul risultato della valutazione delle due espressioni secondarie.



<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>

Questo elemento rappresenta un'operazione booleana OR sul risultato della valutazione delle due espressioni secondarie.



<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>

Questo elemento rappresenta un'operazione booleana NOT sul risultato della valutazione delle sue espressioni secondarie.



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name  CDATA #REQUIRED>

Questo elemento è utilizzato per valutare la classe o l'interfaccia di ciascun oggetto nella selezione corrente. Se ciascun oggetto nella selezione implementa la classe o interfaccia specificata, l'espressione è considerata verificata.



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Questo elemento è utilizzato per valutare lo stato dell'attributo di ciascun oggetto nella selezione corrente. Se ciascun oggetto nella selezione presenta lo stato dell'attributo specificato, l'espressione è considerata verificata. Per valutare questo tipo di espressione, tutti gli oggetti della selezione devono implementare o adattarsi all'interfaccia org.eclipse.ui.IActionFilter.



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

Questo elemento è utilizzato per valutare lo stato di un plugin. Lo stato di un plugin può assumere i valori installed (equivalente al concetto OSGi di "resolved") o activated (equivalente al concetto OSGi di "active").



<!ELEMENT systemProperty EMPTY>

<!ATTLIST systemProperty

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Questo elemento è utilizzato per valutare lo stato delle proprietà di un sistema. Il valore della proprietà è richiamato da java.lang.System.



Di seguito vengono riportati esempi di decoratori:

Un decoratore completo. Lo sviluppatore del plugin deve gestire il supporto dell'immagine.

 

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

Un decoratore semplificato. È presente una classe concreta, ma in quanto ILightweightLabelDecorator deve sono fornire un testo e un ImageDescriptor; non è necessaria una gestione delle risorse.

 

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

Un decoratore semplificato dichiarativo. Non è presente una classe concreta, quindi è necessario fornire un'icona e un quadrante al quale applicare l'icona.

 

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

il valore dell'attributo class deve essere il nome completo di una classe che implementa org.eclipse.jface.viewers.ILabelDecorator (se il valore lightweight è false) oppure org.eclipse.jface.viewers.ILightweightLabelDecorator. Questa classe viene caricata per ultima, in modo da evitare il caricamento dell'intero plugin prima del necessario. I decoratori dichiarativi non effettuano alcuna attivazione di plugin e dovrebbero sempre essere utilizzati. I decoratori non semplificati diventeranno presto obsoleti.

I plugin possono utilizzare questo punto di estensione per aggiungere nuovi decoratori da applicare alle viste che utilizzano il gestore decoratori come decoratore di etichetta. Per servirsi del gestore decoratori, utilizzare il risultato di IViewPart.getDecoratorManager() come decoratore per un'istanza di DecoratingLabelProvider. Questo è attualmente utilizzato dalla Selezione risorse.