Aktiveringen og/eller synligheten til en handling kan defineres ved hjelp av elementene enablement og visibility. Disse to elementene inneholder et boolsk uttrykk som blir evaluert for å bestemme aktiveringen og/eller synligheten.
Syntaksen er den samme for elementene enablement og visibility. Begge inneholder bare ett delelement med et boolsk uttrykk. I sin enkleste form vil dette være et element av typen objectClass, objectState, pluginState eller systemProperty. I mer komplekse tilfeller kan elementene and, or og not kombineres for å danne et boolsk uttrykk. Både and- og or-elementet må inneholde to delelementer. Elementet not kan bare inneholde ett delelement.
<!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>
Dette elementet blir brukt til å definere en gruppe med handlinger og/eller menyer for en visning.
<!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>
Dette elementet definerer en handling som brukeren kan aktivere i brukergrensesnittet.
push | - som et vanlig menypunkt eller verktøyelement. | |
radio | - som et menypunkt med valgknapper eller verktøyelementer. Handlinger med valgknapper på samme meny eller i samme verktøylinjegruppe fungerer som et valgknappsett. Den første verdien er oppgitt av attributtet state. | |
toggle | - som et avmerkingsmenypunkt eller som et aktivert/deaktivert verktøyelement. Den første verdien er oppgitt av attributtet state. |
! | - 0 elementer er valgt | |
? | - 0 eller 1 element er valgt | |
+ | - 1 eller flere elementer er valgt | |
multiple, 2+ | - 2 eller flere elementer er valgt | |
n | - et nøyaktig antall elementer er valgt. For eksempel: enablesFor=" 4" aktiverer handlingen bare når 4 elementer er valgt | |
* | - et hvilket som helst antall elementer er valgt |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Dette elementet blir brukt til å definere en ny meny.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Dette elementet blir brukt til å opprette et menyskilletegn på den nye menyen.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Dette elementet blir brukt til å opprette en navngitt gruppe på den nye menyen. Det har ingen visuell fremstilling på den nye menyen, i motsetning til separator-elementet.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Dette elementet blir brukt til å bestemme handlingsaktiveringen basert på det gjeldende valget. Blir ignorert hvis enablement-elementet er oppgitt.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet blir brukt til å definere aktiveringen for utvidelsen.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Elementet blir brukt til å definere synligheten for utvidelsen.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette elementet representerer en boolsk AND-operasjon på resultatet av evalueringen av de to delelementuttrykkene.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette elementet representerer en boolsk OR-operasjon på resultatet av evalueringen av de to delelementuttrykkene.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette elementet representerer en boolsk NOT-operasjon på resultatet av evalueringen av delelementuttrykkene.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Dette elementet brukes til å evaluere klassen eller grensesnittet for hvert objekt i det gjeldende valget. Hvis hvert objekt i valget implementerer oppgitt klasse eller grensesnitt, blir uttrykket evaluert som "true".
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Dette elementet brukes til å evaluere attributtstatusen til hvert objekt i det gjeldende valget. Hvis hvert objekt i valget har den oppgitte attributtstatusen, blir uttrykket evaluert som "true". Hvis du skal evaluere denne typen uttrykk, må hvert objekt i valget implementere, eller tilpasses til, org.eclipse.ui.IActionFilter-grensesnittet.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Dette elementet brukes til å evaluere tilstanden til en plugin-modul. Tilstanden til plugin-modulen kan være en av følgende: installed (tilsvarer OSGi-begrepet "behandlet") eller activated (tilsvarer OSGi-begrepet "aktiv").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Dette elementet brukes til å evaluere tilstanden til en systemegenskap. Egenskapsverdien blir hentet fra 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=
"&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>
I eksempelet over vil den oppgitte handlingen bare aktiveres for et enkelt valg (enablesFor-attributtet). I tillegg må hvert objekt i valget være en Java-filressurs.
Nedenfor finner du et annet eksempel på en visningshandlingsutvidelse.
<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 eksempelet ovenfor vil den oppgitte handlingen bli vist som et menypunkt. Handlingen blir aktivert hvis valget ikke inneholder Java-filressurser.
Grensesnittet org.eclipse.ui.IViewActionDelegate utvider org.eclipse.ui.IActionDelegate og legger til en tilleggsmetode som gjør at delegaten kan initialiseres sammen med visningsforekomsten den bidrar til.
Dette utvidelsespunktet kan brukes til å bidra med handlinger på menyer som tidligere er opprettet av målvisningen. Hvis menybaneattributtet utelates, blir den nye menyen eller handlingen lagt til nederst på valgmenyen.
Aktiveringskriteriene for handlingsutvidelsen er først definert av enablesFor, og i tillegg av enten selection eller enablement. Men når det er opprettet en forekomst av handlingsdelegaten, kan den styre handlingsaktiveringstilstanden direkte i selectionChanged-metoden.
Etiketter for handlinger og menyer kan inneholde spesialtegn som koder bokstavvalg i henhold til disse reglene:
Elementene selection og enablement utelukker hverandre. Elementet enablement kan erstatte elementet selection ved å bruke delelementene objectClass og objectState. For eksempel kan følgende:
uttrykkes 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. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html