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 legegyserűbb esetben ez egy objectClass, objectState, pluginState vagy systemProperty elem. Bonyolultabb esetben az and, or és not elemek is felhasználhatók egy összetettebb logikai kifejezés létrehozására. Az and és or elemek két részelemet kell, hogy tartalmazzanak. A not elem csak egy 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 a felhasználói felületről a felhasználó által meghívható tevékenységet adja meg.
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 kiválasztott elemek pontos száma. Például az enablesFor=" 4" a tevékenységet csak akkor engedélyezi, ha pontosan négy elem van kiválasztva. | |
* | - tetszés szerinti 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>
Ez az elem szolgál az új menü egy elválasztójának létrehozására.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Ez az elem szolgál az új menü egy megnevezett csoportjának létrehozására. 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 használatos 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. Az ilyen típusú kifejezések kiértékeléséhez a kijelölés minden egyes objektumának meg kell valósítania (vagy alkalmazkodnia kell) az org.eclipse.ui.IActionFilter felületet.
<!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 menü"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"& XYZ eszköz futtatása"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"XYZ eszköz futtatása"
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 menü"
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ételeket kezdetben az enablesFor határozza meg, valamint vagy a selection vagy az enablement. 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.