Dekoratører

org.eclipse.ui.decorators

Utgave 2.0

Dette utvidelsespunktet blir brukt til å legge til dekoratører til visninger som abonnerer på en dekoratørstyrer. Fra og med 2.1 er det en enkel dekoratør som behandler bildestyringen for dekoratøren. Det er også mulig å deklarere en enkel dekoratør som bare legger over et ikon som aktiveres, uten at det kreves noen implementering fra plugin-modulen.

Aktiveringen og/eller synligheten til en handling kan defineres ved hjelp av elementene enablement og visibility. Disse to elementene inneholder et boolsk uttrykk som blir evaluert for å bestemme aktiveringen og/eller synligheten.

Syntaksen er den samme for elementene enablement og visibility. Begge inneholder bare ett underelement med et boolsk uttrykk. I sin enkleste form vil dette være et element av typen objectClass, objectState, pluginState eller systemProperty. I mer komplekse tilfeller kan elementene and, or og not kombineres for å danne et boolsk uttrykk. Både and- og or-elementet må inneholde to underelementer. Elementet not kan bare inneholde ett underelement.

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

et valgfritt underelement der hoveddelen skal inneholde tekst som gir en kort beskrivelse av dekoratøren. Dette blir vist på dekoratørens preferanseside, så dette bør inkluderes. Standardverdien er en tom streng.



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

Elementet blir brukt til å definere aktiveringen for utvidelsen.



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

Elementet blir brukt til å definere synligheten for utvidelsen.



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

Dette elementet representerer en boolsk AND-operasjon på resultatet av evalueringen av de to underelementuttrykkene.



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

Dette elementet representerer en boolsk OR-operasjon på resultatet av evalueringen av de to underelementuttrykkene.



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

Dette elementet representerer en boolsk NOT-operasjon på resultatet av evalueringen av underelementuttrykkene.



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name CDATA #REQUIRED>

Dette elementet brukes til å evaluere klassen eller grensesnittet for hvert objekt i det gjeldende valget. Hvis hvert objekt i valget implementerer oppgitt klasse eller grensesnitt, blir uttrykket evaluert som "true".



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dette elementet brukes til å evaluere attributtstatusen til hvert objekt i det gjeldende valget. Hvis hvert objekt i valget har den oppgitte attributtstatusen, blir uttrykket evaluert som "true". Hvis du skal evaluere denne typen uttrykk, må hvert objekt i valget implementere, eller tilpasses til, org.eclipse.ui.IActionFilter-grensesnittet.



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

Dette elementet brukes til å evaluere tilstanden til en plugin-modul. Tilstanden til plugin-modulen kan være en av følgende: installed (tilsvarer OSGi-begrepet "behandlet") eller activated (tilsvarer OSGi-begrepet "aktiv").



<!ELEMENT systemProperty EMPTY>

<!ATTLIST systemProperty

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Dette elementet brukes til å evaluere tilstanden til en systemegenskap. Egenskapsverdien blir hentet fra java.lang.System.



Dette er eksempler på dekoratører:

En fullstendig dekoratør. Plugin-utviklere må behandle sin egen bildestøtte.

 

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

En enkel dekoratør. Det finnes en konkret klasse, men fordi den er en ILightweightLabelDecorator, trenger den bare å oppgi tekst og en ImageDescriptor og trenger derfor ingen ressursbehandling.

 

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

En deklarativ enkel dekoratør. Det finnes ingen konkret klasse, så den oppgir et ikon og en kvadrant for å bruke det ikonet.

 

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

Verdien til class-attributtet må være det fullt kvalifiserte navnet på en klasse som implementerer org.eclipse.jface.viewers.ILabelDecorator (hvis lightweight er "false") eller org.eclipse.jface.viewers.ILightweightLabelDecorator. Denne klassen blir lastet inn så sent som mulig for å unngå at hele plugin-modulen lastes inn før det er helt nødvendig. Deklarative dekoratører krever ikke plugin-aktivering og bør brukes så sant det er mulig. Dekoratører som ikke er lightweight, blir etter hvert foreldet.

Plugin-moduler kan bruke dette utvidelsespunktet for å legge til nye dekoratører som skal brukes i visninger som bruker dekoratørstyreren som etikettdekoratør. Når du skal bruke dekoratørstyreren, bruker du resultatet av IViewPart.getDecoratorManager() som dekoratør for en forekomst av DecoratingLabelProvider. Dette brukes for tiden av ressursnavigatoren.