En funktions aktivering og/eller synlighed kan defineres ved hjælp af elementerne enablement og visibility. Disse to elementer indeholder et boolesk udtryk, der evalueres for at bestemme aktiveringen og/eller synligheden.
Syntaksen er den samme for elementerne enablement og visibility. De indeholder begge kun et underelement til et boolesk udtryk. I de mest enkle tilfælde vil det være et af følgende elementer: objectClass, objectState, pluginState eller systemProperty. I mere komplekse tilfælde kan elementerne and, or og not kombineres, så de danner et boolesk udtryk. Både elementet and og or skal indeholde to underelementer. Elementet not må kun indeholde et underelement.
<!ELEMENT extension (viewContribution+)>
<!ATTLIST-udvidelse
point CDATA #REQUIRED
id CDATA #IMPLIED
navn CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Dette element bruges til at definere en gruppe oversigtsfunktioner og/eller -menuer.
<!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 element definerer en funktion, som brugeren kan starte i brugergrænsefladen.
push | - et almindeligt punkt på en menu eller en værktøjslinje. | |
radio | - en valgknap på en menu eller værktøjslinje. Flere funktioner, der bruger valgknaptypen inden for den samme menu- eller værktøjsgruppe fungerer som et valgknapsæt. Den første værdi angives ved hjælp af attributten state. | |
toggle | - et menupunkt til afkrydsning eller et punkt på værktøjslinjen til aktivering/deaktivering. Den første værdi angives ved hjælp af attributten state. |
! | - 0 elementer er valgt | |
? | - 0 eller 1 element er valgt | |
+ | - 1 eller flere elementer er valgt | |
flere, 2+ | - 2 eller flere elementer er valgt | |
n | - et præcist antal elementer er valgt. For eksempel: enablesFor=" 4" aktiverer kun funktionen, hvis 4 elementer er valgt | |
* | - et vilkårligt antal elementer er valgt |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Dette element bruges til at definere en ny menu.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Dette element bruges til at oprette en menuseparator på den nye menu.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Dette element bruges til at oprette en navngiven gruppe på den nye menu. Den har ingen visuel repræsentation på den nye menu i modsætning til elementet separator.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
klasse CDATA #REQUIRED
navn CDATA #IMPLIED>
Dette element bruges til at hjælpe med at bestemme funktionsaktiveringen på basis af det aktuelle valg. Ignoreres, hvis elementet enablement er angivet.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette element bruges til at definere aktiveringen af udvidelsen.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette element bruges til at definere synligheden for udvidelsen.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette element repræsenterer en boolesk AND-funktion på resultatet af evalueringen af dets to underelementudtryk.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette element repræsenterer en boolesk OR-funktion på resultatet af evalueringen af dets to underelementudtryk.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Dette element repræsenterer en boolesk NOT-funktion på resultatet af evalueringen af dets to underelementudtryk.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Dette element bruges til at evaluere klassen eller grænsefladen for hvert objekt i det aktuelle valg. Hvis hvert objekt i valget implementerer den angivne klasse eller grænseflade, evalueres udtrykket som true.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
navn CDATA #REQUIRED
value CDATA #REQUIRED>
Dette element bruges til at evaluere attributtilstanden for hvert objekt i det aktuelle valg. Hvis hvert objekt i valget har den angivne attributtilstand, evalueres udtrykket som true. For at evaluere denne type udtryk skal hvert objekt i valget implementere eller tilpasse dig grænsefladen org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Dette element bruges til at evaluere tilstanden for plugin. Tilstanden for plugin kan være en af følgende: installed (svarer til OSGi-konceptet "resolved") eller activated (svarer til OSGi-konceptet "active").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
navn CDATA #REQUIRED
value CDATA #REQUIRED>
Dette element bruges til at evaluere tilstanden for visse systemegenskaber. Egenskabsværdien hentes fra java.lang.System.
<udvidelsespunkt=
"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 eksemplet ovenfor bliver den angivne funktion kun aktiveret for et enkelt valg (attributten enablesFor). Desuden skal objektet i valget være en Java-filressource.
Her er endnu et eksempel på et udvidelsespunkt til en oversigtsfunktion:
<udvidelsespunkt=
"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=
"&Udfør XYZ2-værktøj"
menubarPath=
"com.xyz.xyzMenu/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"Udfør XYZ2-værktøj"
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 eksemplet ovenfor bliver den angivne funktion vist som et menupunkt. Funktionen aktiveres, hvis valget ikke indeholder nogen Java-filressourcer.
Grænsefladen org.eclipse.ui.IViewActionDelegate udvider org.eclipse.ui.IActionDelegate og tilføjer en ekstra metode, der giver den delegerede mulighed for at blive initialiseret med den oversigtsforekomst, den bidrager til.
Udvidelsespunktet kan bruges til at tilføre funktioner til menuer, der tidligere er oprettet af måloversigten. Hvis menustiattributten udelades, bliver den nye menu eller funktion tilføjet nederst på menuen.
Aktiveringskriterierne for en funktionsudvidelse defineres først af enablesFor og også af enten selection eller enablement. Men når der er oprettet en forekomst af den funktionsdelegerede, kan den styre aktiveringstilstanden direkte i metoden selectionChanged.
Funktions- og menuetiketter kan indeholde specialtegn, der koder valgbogstaver ved hjælp af følgende regler:
Elementerne selection og enablement udelukker gensidigt hinanden. Elementet enablement kan erstatte elementet selection ved brug af underelementerne objectClass og objectState. For eksempel kan følgende:
udtrykkes ved hjælp af:<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