När en insticksmodul bidrar med en åtgärd till arbetsmiljöns UI med en av utökningspunkterna, kan de ange under vilka villkor menyalternativ ska visas och/eller vara aktiverat på menyn. Förutom att tillhandahålla enkla aktiveringsvillkor, t.ex. markeringantal och markeringsklasser, kan insticksmoduler använda booleska uttryck för mer flexibilitet i fastställandet av när en åtgärd ska visas eller vara aktiverad.
Booleska uttryck kan innehålla de booleska operatorerna (NOT, AND, OR) kombinerade med en fördefinierad syntax för utvärdering av vissa villkor. Många av dessa villkor testar ett visst objekt. Identiteten för "objektet i fokus" (det objekt som testas) beror på den specifika kontexten för aktiveringsuttrycket:
När ett värde anges som ska testas mot ett av dessa uttryck, antas värdet vara en sträng utom när följande omvandlingar har lyckats:
En fullständig definition av aktiverande XML-syntax finns i referensdokumentation för en utökningspunkt för en utökning som definierar ett enablement-element, t.ex. org.eclipse.ui.popupMenus.
Innan R3.0, var dessa generaliserade booleska uttryck inte tillgängliga. Följande fördefinierade uttryck användes till att utvärdera vissa villkor utan att ett allmänt uttryck byggdes. Lägg märke till att vilket som helst av dessa uttryck nu kan uttryckas med den mer generaliserade syntaxen. De fördefinierade uttrycken kan fortfarande användas enligt följande:
objectClass - sant om varje objekt i urvalet har klassen som underklass eller implementerar klassen.
objectState - sant om det namngivna attributet är lika med det angivna värdet. IActionFilter hjälper till vid utvärdering av uttrycket. Ett åtgärdsfilter beräknar dynamiskt aktiveringskriteriet för en åtgärd baserat på målurvalet och värdet på namngivna attribut.
systemProperty - sant om den namngivna systemegenskapen är lika med det angivna värdet.
pluginState - anger om det angivna insticksprogrammet (efter id) ska installeras eller aktiveras
Ett exempel: följande kodstycken betecknar aktiveringsuttryck som kan användas för en hypotetisk åtgärd i en åtgärdsuppsättning:
<action id="org.eclipse.examples.actionEnablement.class" label="Red Element" menubarPath="additions" class="org.eclipse.examples.actionEnablement.ObjectTestAction"> <enablement> <and> <objectClass name="org.eclipse.examples.actionEnablement.TestElement"/> <objectState name="name" value="red"/> </and> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.property" label="Property" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PropertyTestAction"> <enablement> <systemProperty name="MyTestProperty" value="puppy"/> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.pluginState" label="Installed" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PluginTestAction"> <enablement> <pluginState id="x.y.z.anotherPlugin" value="installed"/> </enablement> </action>
Se utökningspunkternas referensdokumentation för mer utvecklade exempel på dessa uttryck och en fullständig beskrivning av XML-koden.
I följande tabell anges utökningspunkter som bidrar med åtgärder och summeras hur XML-kodattribut och booleska uttryck kan användas till att påverka aktiveringen.
Utökningspunktens namn |
Attribut som påverkar aktiveringen |
Booleska uttryck |
---|---|---|
enablesFor - anger det urvalsantal som måste uppfyllas för att åtgärden ska aktiveras selection class - den klass som de markerade objekten måste ha som underklass eller implementera för att åtgärden ska aktiveras selection name - ett jokerteckenfilter som kan tillämpas på objekten i urvalet. |
visibility - ett booleskt uttryck. Styr huruvida menyalternativet visas på menyn. enablement - ett booleskt uttryck. Styr huruvida menyalternativet är aktiverat på menyn. Attributet enablesFor och selection class och name, måste vara uppfyllda innan aktiveringsuttrycket tillämpas. |
|
(Endast för objektbidrag.) objectClass - anger den klass som objekt i urvalet måste ha som underklass eller implementera (För både objekt- och visningsbidrag) enablesFor - anger det urvalsantal som måste uppfyllas för att åtgärden ska aktiveras selection class - den klass som de markerade objekten måste ha som underklass eller implementera för att aktivera åtgärden selection name - ett jokerteckenfilter som kan tillämpas på objekten i urvalet.
|
(För både objekt- och visningsbidrag) visibility - ett booleskt uttryck. Styr huruvida menyalternativet visas på menyn. enablement - ett booleskt uttryck. Styr huruvida menyalternativet är aktiverat på menyn. Attributet enablesFor och selection class och name, måste vara uppfyllda innan aktiveringsuttrycket tillämpas. |
Möjligheten att definiera innehållstyper (se Innehållstyper) kan kombineras med booleska uttryck till att definiera väldig specifika aktiverings- eller synlighetsvillkor baserat på innehållstypen för en resurs. Ett exempel: följande kodstycke gör ett snabbmenyobjekt synligt endast om den markerade filens innehåll matchar insticksmodulens specialiserade innehållstyper.
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="com.example.objectContributions" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.xml"> <visibility> <or> <objectState name="contentTypeId" value="com.example.employeeRecordContentType"/> <objectState name="contentTypeId" value="com.example.customerRecordContentType"/> </or> </visibility> <action id="com.example.action1" ...Attributet contentTypeId kan användas i ett objectState-uttryck till att kontrollera innehållstypen för den markerade xml-filen. Detta innebär att en insticksmodul kan tillämpa väldigt specifik innehållskontroll innan den aktiverar eller visar menyåtgärder relaterade till visa typer av filer. Se Innehållstyper för mer utförlig information om innehållstypsutökningen.