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 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:
objectClass - sant hvis hvert objekt i utvalget bruker subklasser for eller implementerer klassen
objectState - sant hvis det navngitte attributtet er likt den oppgitte verdien. IActionFilter hjelper til med å evaluere uttrykket. Et handlingsfilter behandler dynamisk aktiveringskriterier for en handling som er basert på et målutvalg og verdien i navngitte attributter
systemProperty - sant hvis den navngitte systemegenskapen er lik den oppgitte verdien
pluginState - anpgir om den angitte plugin-modulen (per ID) må være installert eller aktivert
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 |
---|---|---|
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. |
|
(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. |
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.