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.
Létezik egy megvalósítási korlátozás, amely pillanatnyilag a tevékenységkészleteket befolyásolja. Fontos meghatározni a tevékenységkészleten belülről hivatkozandó teljes menüszerkezetet. Így például, ha egy másik tevékenységkészlet meghatároz egy "példa" nevű menüt, akkor nem lehet a meglévő "példa" menüre támaszkodni. A "példa" menü átdefiniálása szükséges minden tevékenységkészletben, amely használni kívánja azt.
Egy tevékenység engedélyezését vagy láthatóságát az enablement és visibility elemekkel lehet megadni. E két elem egy logikai kifejezést tartalmaz, amelyek kiértékelve meghatározzák az engedélyezést és/vagy láthatóságot.
Az enablement és visibility elemek szintaxisa ugyanaz. Mindkettő egyetlen logikai kifejezés részelemet tartalmazhat. 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.
push | - normál menü- vagy eszköztár-elem. | |
radio | - választógomb stílusú menü- vagy eszköztár-elem. Az ugyanazon menü- vagy eszköztárcsoporton belüli választógomb stílusú tevékenységek választógombokként működnek. A kezdőértéket a state attribútum határozza meg. | |
toggle | - megjelölt vagy átkapcsolható stílusú menüelem. A kezdőértéket a state attribútum határozza meg. | |
pulldown | - lépcsőzetes stílusú menüpont, vagy legördülő menü az eszközelem mellett. |
! | - egy elem sincs kiválasztva | |
? | - 0 vagy 1 elem van kiválasztva | |
+ | - 1 vagy több elem van kiválasztva | |
multiple, 2+ | - 2 vagy több elem van kiválasztva | |
n | - a kijelölt elemek pontos száma. Például: Az enablesFor=" 4" csak akkor engedélyezi a tevékenységet, ha 4 elem van kijelölve | |
* | - tetszőleges számú elem van kiválasztva |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Ez az elem szolgál egy új menü meghatározására.
<!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. Az új menüben látható módon nem jelenik meg (szemben a separator elemmel).
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Ez az elem segít annak meghatározásában, milyen tevékenység legyen engedélyezve az aktuális kiválasztás alapján. Figyelmen kívül marad, ha az enablement elem meg van adva.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ez az elem szolgál a kiterjesztés engedélyezésének meghatározására.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ez az elem szolgál a kiterjesztés láthatóságának meghatározására.
<!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>
Ez az elem szolgál az aktuális kijelölésben szereplő egyes objektumok osztályainak vagy felületeinek kiértékelésére. A kifejezés értéke akkor igaz, ha a kijelölés minden egyes objektuma megvalósítja az adott osztályt vagy felületet.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Ez az elem használatos az aktuális kijelölésben szereplő egyes objektumok attribútumállapotainak kiértékelésére. A kifejezés értéke akkor igaz, ha a kijelölés minden egyes objektuma egy adott attribútumállapottal bír. 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">
Ez az elem szolgál egy bedolgozó állapotának kiértékelésére. 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>
Ez az elem szolgál bizonyos rendszertulajdonságok állapotának kiértékelésére. A tulajdonság értéke a java.lang.System helyről kerül lekérésre.
<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=
"&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=
"&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=
"&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=
"&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=
"&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 tevékenységkiterjesztés engedélyezési feltételeit kezdetben az enablesFor, és a selection vagy enablement elem adja meg. Miután azonban a tevékenység megbízottja példányosításra került, az közvetlenül is vezérelheti az állapotot a saját selectionChanged metódusával.
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égek és a menücímkék hívóbetűket kódoló speciális karaktereket is tartalmazhatnak, az alábbi szabályoknak megfelelően:
A selection és enablement elemek kölcsönösen kizárják egymást. Az enablement helyettesítheti a selection elemet az objectClass és objectState részelemek használatával. Például az alábbi kód:
kifejezhető így is:<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
Felső szintű menük a path attribútum alábbi értékeivel hozhatók létre:
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.
Copyright (c) 2000, 2004 IBM Corporation és mások.
Minden jog fenntartva. Jelen program és annak kísérőanyagai a csomaghoz
tartozó, illetve a
http://www.eclipse.org/legal/epl-v10.html
címen is elérhető Eclipse Public License 1.0 verziójának hatálya alatt lettek
közzétéve.