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.
push | - normális menüpont vagy eszközelem. | |
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 adja meg. | |
toggle | - megjelölt vagy átkapcsolható stílusú menüelem. A kezdőértéket a state attribútum adja meg. | |
pulldown | - lépcsőzetes stílusú menüpont, vagy legördülő menü az eszközelem mellett. |
! | - 0 elem van 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 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.
<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. 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:
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:
a következők segítségévek fejezhető ki:<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>
A felsőszintű menük a path attribútum alábbi értékei segítségével 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.