Dekoratører

org.eclipse.ui.decorators

Release 2.0

Dette udvidelsespunkt bruges til at tilføje dekoratører til oversigter, der abonnerer på en dekoratørstyring. Fra og med 2.1 er begrebet letvægtsdekoratør introduceret. Det håndterer billedstyringen for dekoratøren. Det er også muligt at erklære en letvægtsdekoratør, der simpelthen lægges hen over en ikon, når den aktiveres. Dette kræver ingen implementering fra plugin'en.

En funktions aktivering og/eller synlighed kan defineres ved hjælp af elementerne enablement og visibility. Disse to elementer indeholder et boolesk udtryk, der evalueres for at bestemme aktiveringen og/eller synligheden.

Syntaksen er den samme for elementerne enablement og visibility. De indeholder begge kun et underelement til et boolesk udtryk. I de mest enkle tilfælde vil det være et af følgende elementer: objectClass, objectState, pluginState eller systemProperty. I mere komplekse tilfælde kan elementerne and, or og not kombineres, så de danner et boolesk udtryk. Både elementet and og or skal indeholde to underelementer. Elementet not må kun indeholde et underelement.

<!ELEMENT extension (decorator*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

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

Et valgfrit underelement, der indeholder en kort beskrivelse af dekoratøren. Beskrivelsen vises på indstillingssiden Dekoratører, så det anbefales, at dette element inkluderes. Standardværdien er en tom streng.



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

Dette element bruges til at definere aktiveringen af udvidelsen.



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

Dette element bruges til at definere synligheden for udvidelsen.



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

Dette element repræsenterer en boolesk AND-funktion på resultatet af evalueringen af dets to underelementudtryk.



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

Dette element repræsenterer en boolesk OR-funktion på resultatet af evalueringen af dets to underelementudtryk.



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

Dette element repræsenterer en boolesk NOT-funktion på resultatet af evalueringen af dets to underelementudtryk.



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name CDATA #REQUIRED>

Dette element bruges til at evaluere klassen eller grænsefladen for hvert objekt i det aktuelle valg. Hvis hvert objekt i valget implementerer den angivne klasse eller grænseflade, evalueres udtrykket som true.



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dette element bruges til at evaluere attributtilstanden for hvert objekt i det aktuelle valg. Hvis hvert objekt i valget har den angivne attributtilstand, evalueres udtrykket som true. For at evaluere denne type udtryk skal hvert objekt i valget implementere eller tilpasse dig grænsefladen org.eclipse.ui.IActionFilter.



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

Dette element bruges til at evaluere tilstanden for plugin. Tilstanden for plugin kan være en af følgende: installed (svarer til OSGi-konceptet "resolved") eller activated (svarer til OSGi-konceptet "active").



<!ELEMENT systemProperty EMPTY>

<!ATTLIST systemProperty

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dette element bruges til at evaluere tilstanden for visse systemegenskaber. Egenskabsværdien hentes fra java.lang.System.



Her er et eksempel på nogle dekoratører:

En fuldstændig dekoratør. Pluginudviklerne skal håndtere deres egen billedunderstøttelse.

 

<udvidelsespunkt=

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

En letvægtsdekoratør. Der er en konkret klasse, men da det er en ILightweightLabelDecorator, behøver den kun at levere tekst og en ImageDescriptor, og derfor er der ikke behov for ressourcehåndtering.

 

<udvidelsespunkt=

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

En erklærende letvægtdekoratør. Der er ingen konkret klasse, så den leverer en ikon og en kvadrant for at anvende ikonen.

 

<udvidelsespunkt=

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

Værdien af attributten class skal være det fuldstændige navn på en klasse, der implementerer org.eclipse.jface.viewers.ILabelDecorator (hvis lightweight er false) eller org.eclipse.jface.viewers.ILightweightLabelDecorator. Denne klasse indlæses så sent som muligt for at undgå, at hele plugin indlæses, før det er nødvendigt. Erklærende dekoratører medfører ikke nogen pluginaktivering og kan bruges alle steder, hvor det er muligt. Det ender med, at dekoratører, der ikke er lightweight, bliver forældede.

Plugins kan bruge dette udvidelsespunkt til at tilføje nye dekoratører, som skal anvendes på oversigter, der anvender dekoratørstyringen som etiketdekoratør. Hvis du vil bruge dekoratørstyringen, skal du anvende resultatet af IViewPart.getDecoratorManager() som dekoratør for en forekomst af DecoratingLabelProvider. Dette anvendes i øjeblikket af ressourcenavigatoren.