Díszítmények

org.eclipse.ui.decorators

2.0 kiadás

Ez a kiterjesztési pont díszítményeket ad hozzá a nézetekhez, amelyek előfizetnek a díszítménykezelőre. A 2.1 kiadásban nincs terv könnyűsúlyú díszítményre, amely kezelné a díszítményekhez tartozó képeket. Lehetséges deklarálni egy könnyűsúlyú díszítményt, amely egyszerűen rárajzol valamit egy ikonra, ha az be van kapcsolva és nem igényel megvalósítást a bedolgozótól.

Egy tevékenység engedélyezése és/vagy láthatósága az enablement és visibility elemek segítségével adható meg, értelemszerűen. Ez a két elem egy logikai kifejezést tartalmaz, amely az engedélyezettség és/vagy láthatóság meghatározása érdekében kiértékelésre kerül.

Az enablement és visibility elem szintaxisa megegyezik. Mindkettő csak egy logikai kifejezés részelemet tartalmaz. A legegyszerűbb esetben ez egy objectClass, objectState, pluginState vagy systemProperty elem. Bonyolultabb esetben az and, or és not elemek kombinálhatók egy logikai kifejezés létrehozása érdekében. Az and és or elemnek egyaránt 2 részelemet kell tartalmaznia. A not elem csak 1 részelemet tartalmazhat.

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

egy elhagyható részelem, amelynek törzse a díszítmény rövid leírását biztosító szöveget tartalmazza. Ez megjelenik a Díszítmények beállításlapon, így ajánlatos megadni. Az alapértelmezett érték az üres karaktersorozat.



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

Az elem megadja a kiterjesztés engedélyezettségét.



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

Az elem meghatározza a kiterjesztés láthatóságát.



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

Az elem egy logikai AND műveletet ábrázol a két részelemként kiértékelt kifejezés eredményén.



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

Az elem egy logikai OR műveletet ábrázol a két részelemként kiértékelt kifejezés eredményén.



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

Az elem egy logikai NOT műveletet ábrázol a részelemként kiértékelt kifejezés eredményén.



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name CDATA #REQUIRED>

Az elem kiértékeli az aktuális kijelölés minden objektumának osztályát és felületét. Ha a kijelölés minden objektuma megvalósítja a megadott osztályt vagy felületet, akkor a kifejezés igaz értéket ad vissza.



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Az elem kiértékeli az aktuális kijelölés minden objektumának attribútumállapotát. Ha a kijelölés minden objektuma rendelkezik megadott attribútumállapottal, akkor a kifejezés igaz értéket ad vissza. Ilyen típusú kifejezés kiértékeléséhez a kijelölés minden objektumának meg kell valósítania, vagy adaptálódnia kell az org.eclipse.ui.IActionFilter felülethez.



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

Az elem kiértékeli a bedolgozó állapotát. A bedolgozó állapota az alábbi lehet: telepített ("feloldott" OSGi állapotnak felel meg) vagy aktivált ("aktív" OSGi állapotnak felel meg).



<!ELEMENT systemProperty EMPTY>

<!ATTLIST systemProperty

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Az elem néhány rendszertulajdonság állapotát értékeli ki. A tulajdonságérték a java.lang.System elemből kerül lekérésre.



Az alábbiakban a díszítmények példája látható:

Egy teljes díszítmény. A bedolgozófejlesztőnek a saját képtámogatását kezelnie kell.

 

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

Könnyűsúlyú díszítmény. Ez egy konkrét osztály, de mivel az ILightweightLabelDecorator elemben van, csak szöveget és egy ImageDescriptor elemet kell megadni, így nincs szükség erőforrás-kezelésre.

 

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

Dekalatív könnyűsúlyú díszítmény. Itt nincs konkrét osztály, így ez egy ikont és az ikonra alkalmazható kvadránst biztosít.

 

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

A class attribútum értékének az org.eclipse.jface.viewers.ILabelDecorator (ha a lightweight értéke false) vagy org.eclipse.jface.viewers.ILightweightLabelDecorator elemet megvalósító osztály teljes képzésű nevének kell lenni. Ez az osztály a lehető legkésőbbi időpontban kerül betöltésre annak elkerülése érdekében, hogy a teljes bedolgozó betöltésre kerüljön, mielőtt valójában szükség lenne rá. A deklarációs díszítmények nem vonják maguk után egy bedolgozó aktiválását, és akkor kell használni, amikor lehetséges. A nem könnyűsúlyú díszítmények idővel el fognak avulni.

A bedolgozók ezen kiterjesztési pont segítségével új díszítményeket adnak hozzá, amelyek alkalmazásra kerülnek a díszítménykezelőt címkedíszítményként használó nézetekre. A díszítménykezelő alkalmazásához az IViewPart.getDecoratorManager() eredményét használja a DecoratingLabelProvider példányának díszítményeként. Ezt pillanatnyilag az Erőforrásnavigátor használja.