Decorators

org.eclipse.ui.decorators

Release 2.0

Dit extensiepunt wordt gebruikt om decoraties toe te voegen aan views die geregistreerd zijn bij een decoratiemanager. Vanaf release 2.1 bestaat de lichtgewichtdecoratie, die het beheer van de afbeeldingen voor de decoratie afhandelt. Het is ook mogelijk een lichtgewichtdecoratie te declareren die, indien geactiveerd, een pictogram eenvoudig met een overlay overschrijft en die geen implementatie van de plugin vereist.

U kunt het inschakelen of zichtbaar maken van een actie definiëren met de elementen enablement en visibility. Deze twee elementen bevatten een booleaanse expressie die wordt geëvalueerd om de inschakeling en/of zichtbaarheid vast te stellen.

De syntaxis is voor de elementen enablement en visibility dezelfde. Beide bevatten slechts één booleaanse expressie als subelement. In het eenvoudigste geval is dit een element van het type objectClass, objectState, pluginState of systemProperty. In ingewikkelder gevallen kunnen de elementen and, or en not worden gecombineerd tot booleaanse expressie. De elementen and en or moeten twee subelementen bevatten. Het element not mag slechts één subelement bevatten.

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

een optioneel subelement waarvan het corpus een korte beschrijving van de decoratie dient te bevatten. Dit wordt afgebeeld op de pagina Decoratievoorkeuren en kan dus het beste worden opgenomen. De standaardwaarde is een lege reeks.



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

Dit element wordt gebruikt om het inschakelen voor de extensie te definiëren.



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

Dit element wordt gebruikt om de zichtbaarheid voor de extensie te definiëren.



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

Dit element is een booleaanse AND-bewerking, de evaluatie van twee subelementexpressies.



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

Dit element is een booleaanse OR-bewerking, de evaluatie van twee subelementexpressies.



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

Dit element is een booleaanse NOT-bewerking, de evaluatie van de subelementexpressies.



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name CDATA #REQUIRED>

Dit element wordt gebruikt om de klasse of interface van alle objecten in de huidige selectie te evalueren. Als ieder object in de selectie de opgegeven klasse of interface implementeert, wordt de expressie als waar (true) beschouwd.



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dit element wordt gebruikt om de kenmerkstatus van alle objecten in de huidige selectie te evalueren. Als ieder object in de selectie de opgegeven kenmerkstatus heeft, wordt de expressie als waar (true) beschouwd. Om dit type expressie te evalueren, moet elk object in de selectie de interface org.eclipse.ui.IActionFilter implementeren of eraan aangepast zijn.



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

Dit element wordt gebruikt om de status van een plugin te evalueren. Een plugin kan een van de volgende statussen hebben: installed (equivalent van het OSGi-concept "resolved") of activated (equivalent van het OSGi-concept "active").



<!ELEMENT systemProperty EMPTY>

<!ATTLIST systemProperty

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dit element wordt gebruikt om de status van een systeemeigenschap te evalueren. De waarde van de eigenschap wordt opgehaald uit java.lang.System.



Een voorbeeld van decoraties:

Een volledige decoratie. De pluginontwikkelaar moet de eigen afbeeldingsondersteuning afhandelen.

 

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

Een lichtgewichtdecoratie. Er is een concrete klasse, maar omdat het gaat om een ILightweightLabelDecorator hoeft alleen tekst en een ImageDescriptor te worden verstrekt en is resource-afhandeling niet nodig.

 

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

Een declaratieve lichtgewichtdecoratie. Er is geen concrete klasse, dus worden een pictogram en een kwadrant verstrekt om het pictogram toe te passen.

 

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

de waarde van het kenmerk class moet de volledig gekwalificeerde naam van een klasse zijn die org.eclipse.jface.viewers.ILabelDecorator implementeert (als lichtgewicht onwaar is) en anders een die org.eclipse.jface.viewers.ILightweightLabelDecorator implementeert. Deze klasse wordt zo laat mogelijk geladen om te voorkomen dat de gehele plugin wordt geladen voordat het nodig is. Declaratieve decoraties brengen geen pluginactivering met zich mee en moeten zo vaak mogelijk worden gebruikt. De niet-lichtgewichtdecoraties zullen uiteindelijk gedeprecieerd worden.

Dit extensiepunt kan door de plugins worden gebruikt om nieuwe decoraties toe te voegen die worden toegepast op de views die de decoratiemanager gebruiken als labeldecoratie. Om de decoratiemanager te gebruiken, gebruikt u het resultaat van IViewPart.getDecoratorManager() als decoratie voor een instance van DecoratingLabelProvider. Deze wordt op dit moment door de Resourcenavigator gebruikt.