Boolske uttrykk og handlingsfiltre

Når en plugin-modul bidrar med en handling i arbeidsbenkens brukergrensesnitt via ett av utvidelsespunktene på menyen, kan den oppgi under hvilke betingelser menypunktet skal vises og/eller aktiveres på menyen. I tillegg til å oppgi enkle aktiveringsbetingelser, for eksempel antall valg og valgklasser, kan plugin-moduler bruke boolske uttrykk som gir mer fleksibilitet når man skal angi når en handling skal være synlig eller aktivert.

Boolske aktiveringsuttrykk

Boolske uttrykk kan inneholde de boolske operatorene (NOT, AND, OR) i kombinasjon med en forhåndsdefinert syntaks for evaluering av bestemte betingelser. En rekke av disse betingelsene tester et bestemt objekt. Identiteten til objektet som testes, avhenger av den bestemte konteksten i aktiveringsuttrykket:

Når det angis en verdi som skal testes mot disse uttrykkene, antas verdien å være en streng bortsett fra når følgende konverteringer lykkes:

Du finner en fullstendig definisjon av aktivering av XML-syntaks i referansedokumentasjonen for utvidelsespunkt for enhver utvidelse som definerer et enablement-element, for eksempel org.eclipse.ui.popupMenus.

Før versjon R3.0 var ikke disse generaliserte boolske uttrykkene tilgjengelige. Følgende forhåndsdefinerte uttrykk ble brukt til å vurdere bestemte betingelser uten at det ble bygd et generelt uttrykk. Merk at hvilket som helst av disse uttrykkene nå kan uttrykkes med en mer generalisert syntaks. De forhåndsdefinerte uttrykkene kan fortsatt brukes på følgende måte:

For eksempel skal følgende snutter representere aktiveringsuttrykk som kan brukes i en hypotetisk handling i et handlingssett:

<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 referansedokumentasjonen i utvidelsespunktene for mer utfyllende eksempler på disse uttrykkene og en fullstendig beskrivelse av XML.

Følgende tabell viser utvidelsespunktene som bidrar med handlinger og oppsummerer hvordan XML-kodetypeattributter og boolske uttrykk kan brukes til å påvirke aktivering.

Navn på utvidelsespunkt

Attributter som påvirker aktivering

Boolske uttrykk

viewActions,

editorActions,

actionSets

enablesFor - angir antall valg som må oppfylles for at handlingen skal bli aktivert

selection class - klassen som valgte objekter må bruke som subklasse eller implementere for å aktivere handlingen

selection name - et jokertegnfilter som kan brukes på objekter i utvalget

visibility - et boolsk uttrykk. Angir om menypunktet er synlig på menyen.

enablement - et boolsk uttrykk. Angir om menypunktet er aktivert på menyen.  Attributtet enablesFor og selection class og name må være oppfylt før aktiveringsuttrykket brukes.

popupMenus

(Bare for objektbidrag.)

objectClass - angir klassen som objekter i utvalget må bruke som subklasse eller implementere

(Både for objekt- og visningsprogrambidrag)

enablesFor - angir antall valg som må oppfylles for at handlingen skal bli aktivert

selection class - klassen som valgte objekter må bruke som subklasse eller implementere for å aktivere handlingen

selection name - et jokertegnfilter som kan brukes på objekter i utvalget

 

(Både for objekt- og visningsprogrambidrag)

visibility - et boolsk uttrykk. Angir om menypunktet er synlig på menyen.

enablement - et boolsk uttrykk. Angir om menypunktet er aktivert på menyen.  Attributtet enablesFor og selection class og name må være oppfylt før aktiveringsuttrykket brukes.

Bruke objectState med innholdstyper

Muligheten for å definere innholdstyper (se Innholdstyper) kan kombineres med boolske uttrykk for å definere svært spesifikke betingelser for aktivering eller synlighet basert på innholdstypen i en ressurs. Følgende snutt gjør et hurtigmenypunkt synlig bare hvis det valgte filinnholdet samsvarer med plugin-modulens spesialinnholdstyper.

<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"
         ...
Attributtet contentTypeId kan brukes i et objectState-uttrykk for å kontrollere innholdstypen for den valgte XML-filen. Dette gjør det mulig for plugin-modulen å bruke svært spesifikk innholdskontroll før aktivering eller vising av menyhandlinger som er knyttet til bestemte filtyper. Du finner mer informasjon om innholdstypeutvidelser, under Innholdstyper.