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 (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Ezzel az elemmel adható meg nézettevékenységek és/vagy menük egy csoportja.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
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) "push"
state (true | false)
class CDATA #REQUIRED
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. |
! | - 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.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</viewContribution>
</extension>
A fenti példában a megadott tevékenység csak egyetlen kiválasztást enged (enablesFor attribútum). Ezen felül a kijelölt objektum egy Java fájl erőforrás kell, hogy legyen.
Az alábbiakban bemutatunk még egy példát egy nézet-tevékenységkiterjesztés deklarációjára:
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"& XYZ2 eszköz futtatása"
menubarPath=
"com.xyz.xyzMenu/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"XYZ2 eszköz futtatása"
helpContextId=
"com.xyz.run_action_context2"
class=
"com.xyz.actions.RunXYZ2"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
</viewContribution>
</extension>
A fenti példában a megadott tevékenység egy menüpontként jelenik meg. A tevékenység akkor engedélyezett, ha a kijelölés nem tartalmaz Java fájl erőforrásokat.
Az org.eclipse.ui.IViewActionDelegate felület az org.eclipse.ui.IActionDelegate osztályt bővíti és felvesz egy további metódust, amely lehetővé teszi, hogy a megbízott inicializálja a nézetpéldányt, amelyhez hozzájárul.
Ez a kiterjesztési pont használható a cél nézet által korábban létrehozott menük tevékenységekkel bővítésére. A menüútvonal attribútum kihagyása esetén az új menü vagy tevékenység a legördülő menü legvégére kerül.
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.
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>
Copyright (c) 2002, 2005 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.