Aktivering och/eller synlighet för en åtgärd kan definieras med hjälp av elementen enablement respektive visibility. Dessa två element innehåller ett booleskt uttryck som utvärderas för att fastställa aktivering och/eller synlighet.
Syntaxen är densamma för elementen enablement och visibility. Båda innehåller endast ett underelement med ett booleskt uttryck. I det enklaste fallet är det något av elementen objectClass, objectState, pluginState eller systemProperty. I det mer komplicerade fallet kombineras elementen and, or och not så att ett booleskt uttryck skapas. Både and och or måste innehålla två underelement. Elementet not får bara innehålla ett underelement.
<!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>
Det här elementet används för att definiera en grupp vyåtgärder och/eller menyer.
<!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>
Med det här elementet definieras en åtgärd som användaren kan anropa i användargränssnittet.
push | - som ett vanligt meny- eller verktygsalternativ. | |
radio | - som ett menyalternativ i alternativknappsstil eller ett verktygsalternativ. Åtgärder med alternativknappsstil på samma meny eller i samma verktygsfältsgrupp fungerar som en uppsättning alternativ. Startvärdet anges med attributet state. | |
toggle | - som ett markerat menyalternativ eller växlingsbart verktygsalternativ. Startvärdet anges med attributet state. |
! | - 0 objekt markerade | |
? | - 0 eller 1 objekt markerade | |
+ | - 1 eller flera objekt markerade | |
multiple, 2+ | - 2 eller fler objekt markerade | |
n | - ett exakt antal markerade objekt. T.ex.: enablesFor="4" aktiverar endast åtgärden om fyra objekt har markerats. | |
* | - valfritt antal markerade objekt |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Elementet används för att definiera en ny meny.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Elementet används till att skapa en menyavgränsare på den nya menyn.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Elementet används till att skapa en namngiven grupp på den nya menyn. Den har ingen visuell representation på den nya menyn, i motsats till elementet separator.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Elementet används för att hjälpa till att bestämma aktivering av åtgärden, baserat på aktuellt urval. Ignoreras om elementet enablement anges.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet används för att definiera aktivering av utökningen.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet används för att definiera synligheten för utökningen.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet representerar ett booleskt AND-uttryck för resultatet från utvärderingen av de två underelementuttrycken.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet representerar ett booleskt OR-uttryck för resultatet från utvärderingen av de två underelementuttrycken.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet representerar ett booleskt NOT-uttryck för resultatet från utvärderingen av underelementuttrycken.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Elementet används för att utvärdera klassen eller gränssnittet för varje objekt i det aktuella urvalet. Om varje objekt i urvalet implementerar angiven klass eller angivet gränssnitt utvärderas uttrycket till sant.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Elementet används för att utvärdera attributläget för varje objekt i det aktuella urvalet. Om varje objekt i urvalet har angivet attributläge utvärderas uttrycket till sant. För att utvärdera den här typen av uttryck måste varje objekt i urvalet implementera eller anpassas till gränssnittet org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Elementet används för att utvärdera insticksprogrammets läge. Läget för insticksprogrammet kan vara ett av följande:installed (motsvarar OSGi-begreppet "löst") eller activated (motsvarar OSGi-begreppet "aktiv").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Elementet används för att utvärdera läget för vissa systemegenskaper. Egenskapsvärdet hämtas från java.lang.System.
<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=
"&Kör XYZ-verktyget"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Kör XYZ-verktyget"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</viewContribution>
</extension>
I ovanstående exempel aktiverar den angivna åtgärden endast en enstaka markering (attributet enablesFor). Objektet i markeringen måste dessutom vara en Java-filresurs.
Här följer ytterligare ett exempel på en utökning för en vyåtgärd:
<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=
"&Run XYZ2 Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"Run XYZ2 Tool"
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>
I ovanstående exempel visas angiven åtgärd som ett menyalternativ. Åtgärden aktiveras om urvalet inte innehåller några Java-filresurser.
Gränssnittet org.eclipse.ui.IViewActionDelegate utökar org.eclipse.ui.IActionDelegate och lägger till ytterligare en metod med vilken delegaten initierar den vyförekomst som den bidrar till.
Utökningspunkten kan användas till att lägga till åtgärder på menyer som tidigare skapats av målvyn. Om menysökvägsattributet utesluts läggs den nya menyn eller åtgärden till i slutet av menyn.
Aktiveringsvillkoret för en åtgärdsutökning definieras initialt med enablesFor och antingen selection eller enablement. När en förekomst har skapats av åtgärdsdelegaten kan den styra åtgärdens aktiveringsläge direkt inom dess selectionChanged-metod.
Åtgärds- och menyetiketter kan innehålla specialtecken för kodning av snabbtangenter med hjälp av följande regler:
Elementen selection och enablement utesluter varandra. Elementet enablement kan ersätta elementet selection med hjälp av underelementen objectClass och objectState. Till exempel följande:
kan uttryckas med:<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 and others.
All rights reserved.
Detta program och medföljande material tillhandahålls under villkoren för Eclipse Public License v1.0 som medföljer denna distribution och finns tillgänglig på
http://www.eclipse.org/legal/epl-v10.html