Tevékenységkészletek

org.eclipse.ui.actionSets

Ez a kiterjesztési pont menüket, menüpontokat és eszköztár-gombokat ad hozzá a Munkaterület ablak közös területeihez. Ezeket a hozzáadásokat együttesen tevékenységkészletnek hívjuk, és megjelnnek a Munkaterület ablakban, ha a felhasználó személyre szabja a perspektívát.

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ést 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 (actionSet+)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT actionSet (menu* , action*)>

<!ATTLIST actionSet

id          CDATA #REQUIRED

label       CDATA #REQUIRED

visible     (true | false)

description CDATA #IMPLIED>

Ez az elem egy tevékenység- és/vagy menücsoportot ad meg.



<!ELEMENT action (selection* | enablement?)>

<!ATTLIST action

id               CDATA #REQUIRED

label            CDATA #REQUIRED

accelerator      CDATA #IMPLIED

definitionId     CDATA #IMPLIED

menubarPath      CDATA #IMPLIED

toolbarPath      CDATA #IMPLIED

icon             CDATA #IMPLIED

disabledIcon     CDATA #IMPLIED

hoverIcon        CDATA #IMPLIED

tooltip          CDATA #IMPLIED

helpContextId    CDATA #IMPLIED

style            (push|radio|toggle|pulldown) "push"

state            (true | false)

pulldown         (true | false)

class            CDATA #IMPLIED

retarget         (true | false)

allowLabelUpdate (true | false)

enablesFor       CDATA #IMPLIED>

Ez az elem egy tevékenységet ad meg, amelyet a felhasználó meghívhat a felhasználói felületen.



<!ELEMENT menu (separator+ , groupMarker*)>

<!ATTLIST menu

id    CDATA #REQUIRED

label CDATA #REQUIRED

path  CDATA #IMPLIED>

Ez az elem megad egy új menüt.



<!ELEMENT separator EMPTY>

<!ATTLIST separator

name CDATA #REQUIRED>

Az elem létrehoz egy menüelválasztót az új menüben.



<!ELEMENT groupMarker EMPTY>

<!ATTLIST groupMarker

name CDATA #REQUIRED>

Ez az elem az új menüben létrehoz egy megnevezett csoportot. Ez nem rendelkezik vizuális ábrázolással az új menüben, a separator elemmel ellentétben.



<!ELEMENT selection EMPTY>

<!ATTLIST selection

class CDATA #REQUIRED

name  CDATA #IMPLIED>

Ez az elem segít annak meghatározásában, hogy a tevékenységengedélyezés az aktuális kiválasztástól függ. Ha az enablement elem meg van adva, akkor figyelmen kívül marad.



<!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 tevékenységkészletre látható példa (figyelje meg a részelemeket, és az attribútumok használatát):

    

<extension point =

"org.eclipse.ui.actionSets"

>

<actionSet id=

"com.xyz.actionSet"

label=

"My Actions"

>

<menu id=

"com.xyz.xyzMenu"

label=

"XYZ Menu"

path=

"additions"

>

<separator name=

"group1"

/>

<separator name=

"option1"

/>

</menu>

<action id=

"com.xyz.runXYZ"

label=

"&amp;Run XYZ Tool"

style=

"toggle"

state=

"false"

menubarPath=

"com.xyz.xyzMenu/group1"

icon=

"icons/runXYZ.gif"

tooltip=

"Run XYZ Tool"

helpContextId=

"com.xyz.run_action_context"

class=

"com.xyz.actions.RunXYZ"

enablesFor=

"1"

>

<selection class=

"org.eclipse.core.resources.IFile"

name=

"*.java"

/>

</action>

<action id=

"com.xyz.runABC"

label=

"&amp;Run ABC Tool"

style=

"push"

menubarPath=

"com.xyz.xyzMenu/group1"

toolbarPath=

"Normal/XYZ"

icon=

"icons/runABC.gif"

tooltip=

"Run ABC Tool"

helpContextId=

"com.xyz.run_abc_action_context"

retarget=

"true"

allowLabelUpdate=

"true"

>

<enablement>

<and>

<objectClass name=

"org.eclipse.core.resources.IFile"

/>

<not>

<objectState name=

"extension"

value=

"java"

/>

</not>

</and>

</enablement>

</action>

<action id=

"com.xyz.runDEF"

label=

"&amp;Run DEF Tool"

style=

"radio"

state=

"true"

menubarPath=

"com.xyz.xyzMenu/option1"

icon=

"icons/runDEF.gif"

tooltip=

"Run DEF Tool"

class=

"com.xyz.actions.RunDEF"

helpContextId=

"com.xyz.run_def_action_context"

>

</action>

<action id=

"com.xyz.runGHI"

label=

"&amp;Run GHI Tool"

style=

"radio"

state=

"false"

menubarPath=

"com.xyz.xyzMenu/option1"

icon=

"icons/runGHI.gif"

tooltip=

"Run GHI Tool"

class=

"com.xyz.actions.RunGHI"

helpContextId=

"com.xyz.run_ghi_action_context"

>

</action>

<action id=

"com.xyz.runJKL"

label=

"&amp;Run JKL Tool"

style=

"radio"

state=

"false"

menubarPath=

"com.xyz.xyzMenu/option1"

icon=

"icons/runJKL.gif"

tooltip=

"Run JKL Tool"

class=

"com.xyz.actions.RunJKL"

helpContextId=

"com.xyz.run_jkl_action_context"

>

</action>

</actionSet>

</extension>

A fenti példában a "Saját tevékenységek" nevű megadott tevékenységkészlet kezdetben nem látható minden perspektívában, mivel a visible attribútum nincs megadva.

Az XYZ tevékenység jelölőnégyzet menüpontként jelenik meg, és kezdetben nincs bejelölve. Ez csak akkor engedélyezett, ha a kijelölési szám 1, és ha a kiterjesztés tartalmaz Java fájlerőforrásokat.

Az ABC tevékenység a menüben és az eszköztáron is megjelenik. Csak akkor engedélyezett, ha a kijelölés nem tartalmaz Java fájlerőforrásokat. Ne feledje el, hogy ez egy címkeáttervezési tevékenység, azért nem biztosít class attribútumot.

A DEF, GHI és JKL tevékenység választógomb-menüpontként jelenik meg. Ezek az aktuális kijelölési állapottól függetlenül mindig engedélyezve vannak.

A class attribútum értékének az org.eclipse.ui.IWorkbenchWindowActionDelegate vagy org.eclipse.ui.IWorkbenchWindowPulldownDelegate elemet megvalósító osztály teljes képzésű nevének kell lennie. Az utóbbit akkor kell megvalósítani, ha a style attribútum értéke pulldown. Ez az osztály a kezelő, amely a tevékenység végrehajtásáért felelős. Ha a retarget attribútum értéke true, akkor az attribútumot figyelmen kívül kell hagyni és nem biztosítható. 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 tevékenységkiterjesztés engedélyezési feltételeit kezdetben az enablesFor, és a selection vagy enablement elem adja meg. Ha a tevékenységdelegálás példányosításra került, akkor a selectionChanged metódusban szabályozhatja a tevékenység engedélyezési állapotát.

Fontos megjegyezni, hogy a munkaterület nem állít elő menüket a bedolgozó helyett. A menü elérési utaknak már létező menükre kell mutatniuk.

A tevékenység- és menücímkék speciális karaktereket is tartalmazhatnak, amelyek az alábbi szabályok segítségével kódolják a hívóbetűket:

  1. A hívóbetűk az és-jellel ('&') vannak megadva a lefordított szöveg kiválasztott karaktere előtt. Mivel az és-jel XML karaktersorozatokban nem engedélyezett, használja az &amp; karakterentitást.
Ha két vagy több tevékenységet ad hozzá egy kiterjesztés a menühöz vagy eszköztárhoz, akkor tevékenységek fordított sorrendben jelennek meg, mint a plugin.xml fájlban. Ez a viselkedés kétségkívül nem intuitív. Ez az Eclipse Platform API befagyasztása után került feltérképezre. A viselkedés megváltoztatása megszakítaná minden bedolgozó működését, amely a meglévő viselkedésre épül.

A selection és enablement elem kölcsönösen kizárt. Az enablement elem a selection elemmel helyettesíthető az objectClass és objectState részelemek segítségével. Az alábbi például:

 

<selection class=

"org.eclipse.core.resources.IFile"

name=

"*.java"

>

</selection>

a következők segítségévek fejezhető ki:
 

<enablement>

<and>

<objectClass name=

"org.eclipse.core.resources.IFile"

/>

<objectState name=

"extension"

value=

"java"

/>

</and>

</enablement>

A bedolgozók ezen kiterjesztési pontok segítségével adhatnak hozzá új felsőszintű menüket. A bedolgozók megnevezett csoportokat is megadhatnak, amelyekhez más bedolgozók hozzáadhatják a tevékenységeiket.

A felsőszintű menük a path attribútum alábbi értékei segítségével hozhatók létre:

Az elérési út attribútum kihagyása hatására az új menü a kiegészítések menüsor-csoporthoz kerül hozzáadásra.

A munkaterület ablak alapértelmezett csoportjai az IWorkbenchActionConstants felületen vannak megadva. Ezek a konstansok dinamikus közreadások kódjában használhatók. Az értékek az XML fájlba is átmásolhatók a meglévő munkaterület-menükkel és -eszköztárakkal való finoman szabályozható integráció érdekében.

A munkaterület ablak különbözó menü- és eszköztárelemei algoritmussal vannak megadva. Ezekben az esetekben egy külön mechanizmust kell használni az ablak kiterjesztéséhez. Új munkaterület nézet hozzáadása hatására egy új menüpont jelenik meg a Perspektíva menüben. Az importálás, exportálás és új varázslók kiterjesztés automatikusan hozzáadásra kerül az ablakhoz.