U kunt het inschakelen of zichtbaar maken van een actie definiëren met de elementen enablement en visibility. Deze twee elementen bevatten een booleaanse expressie die wordt geëvalueerd om de inschakeling en/of zichtbaarheid vast te stellen.
De syntaxis is voor de elementen enablement en visibility dezelfde. Beide bevatten slechts één booleaanse expressie als subelement. In het eenvoudigste geval is dit een element van het type objectClass, objectState, pluginState of systemProperty. In ingewikkelder gevallen kunnen de elementen and, or en not worden gecombineerd tot booleaanse expressie. De elementen and en or moeten twee subelementen bevatten. Het element not mag slechts één subelement bevatten.
<!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>
Dit element wordt gebruikt om een groep viewacties en/of -menu's te definiëren.
<!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>
Met dit element wordt de actie gedefinieerd die de gebruiker in de gebruikersinterface kan oproepen.
push | - een gewone werkbalk- of menuoptie. | |
radio | - een werkbalk- of menu-item in 'éénkeuze'-stijl. Acties met deze stijl kunnen in een groep opgenomen worden, te vergelijken met een groep keuzerondjes. In dit geval kan slechts één actie worden geselecteerd. De beginwaarde wordt opgegeven in het kenmerk state. | |
toggle | - een gemarkeerde menuoptie of een aan/uit-tooloptie. De beginwaarde wordt opgegeven in het kenmerk state. |
! | - 0 items geselecteerd | |
? | - 0 of 1 item geselecteerd | |
+ | - 1 of meer items geselecteerd | |
multiple, 2+ | - 2 of meer items geselecteerd | |
n | - een exact aantal items geselecteerd. Een voorbeeld: enablesFor=" 4" schakelt de actie alleen in als er vier items zijn geselecteerd. | |
* | - willekeurig aantal items geselecteerd |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Dit element wordt gebruikt om een nieuw menu te definiëren.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Dit element wordt gebruikt om een menuscheidingsteken in het nieuwe menu te maken.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Dit element wordt gebruikt om een benoemde groep in het nieuwe menu te maken. Er is geen visuele voorstelling in het nieuwe menu, in tegenstelling tot het element separator.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Dit element wordt gebruikt om vast te stellen of de actie wordt ingeschakeld op basis van de huidige selectie. Wordt genegeerd als het element enablement is opgegeven.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dit element wordt gebruikt om het inschakelen voor de extensie te definiëren.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dit element wordt gebruikt om de zichtbaarheid voor de extensie te definiëren.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dit element is een booleaanse AND-bewerking, de evaluatie van twee subelementexpressies.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dit element is een booleaanse OR-bewerking, de evaluatie van twee subelementexpressies.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dit element is een booleaanse NOT-bewerking, de evaluatie van de subelementexpressies.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Dit element wordt gebruikt om de klasse of interface van alle objecten in de huidige selectie te evalueren. Als ieder object in de selectie de opgegeven klasse of interface implementeert, wordt de expressie als waar (true) beschouwd.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Dit element wordt gebruikt om de kenmerkstatus van alle objecten in de huidige selectie te evalueren. Als ieder object in de selectie de opgegeven kenmerkstatus heeft, wordt de expressie als waar (true) beschouwd. Om dit type expressie te evalueren, moet elk object in de selectie de interface org.eclipse.ui.IActionFilter implementeren of eraan aangepast zijn.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Dit element wordt gebruikt om de status van een plugin te evalueren. Een plugin kan een van de volgende statussen hebben: installed (equivalent van het OSGi-concept "resolved") of activated (equivalent van het OSGi-concept "active").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Dit element wordt gebruikt om de status van een systeemeigenschap te evalueren. De waarde van de eigenschap wordt opgehaald uit 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=
"XYZ-tool uitvoe&ren"
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>
In het bovenstaande voorbeeld wordt de opgegeven actie alleen ingeschakeld voor een selectie van één item (kenmerk enablesFor). Verder moet het object in de selectie een Java-bestandsresource zijn.
Een tweede voorbeeld van een viewactie-extensie:
<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>
In het bovenstaande voorbeeld wordt de opgegeven actie afgebeeld als menuoptie. De actie wordt ingeschakeld als de selectie geen Java-bestandsresources bevat.
De interface org.eclipse.ui.IViewActionDelegate breidt org.eclipse.ui.IActionDelegate uit en voegt een extra methode toe. Hiermee kan de gemachtigde de viewinstance initialiseren waar hij een bijdrage aan levert.
Dit extensiepunt kan worden gebruikt voor het aanleveren van acties in menu's die eerdere door de doelview zijn gemaakt. Als het menupad niet is vermeld, wordt het nieuwe menu of de nieuwe actie aan het einde van het menu toegevoegd.
De inschakelingscriteria van een actie-extensie worden in eerste instantie gedefinieerd door enablesFor en verder door selection of enablement. Als de gemachtigde van de actie echter is geïnstantieerd, kan deze de inschakelingsstatus van de actie beheren in de methode selectionChanged.
Labels van acties en menu's kunnen speciale tekens bevatten die als keuzeletter fungeren volgens de volgende regels:
De elementen selection en enablement zijn onderling uitwisselbaar. Het element enablement kan het element selection vervangen als u de subelementen objectClass en objectState gebruikt. De code
kan bijvoorbeeld worden gecodeerd als:<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 en anderen.
Alle rechten voorbehouden. Dit programma en het begeleidende materiaal zijn beschikbaar gesteld onder de voorwaarden van de Eclipse Public License v1.0 die bij deze distributie is geleverd en beschikbaar is op http://www.eclipse.org/legal/epl-v10.html.