Når en plugin bidrager med en funktion til arbejdsbænkens brugergrænseflade via et af menuudvidelsespunkterne, kan den angive betingelser for, hvornår menupunktet er synligt og/eller aktiveret på menuen. Ud over at levere simple aktiveringsbetingelser så som valgantal og valgklasser, kan plugins bruge booleske udtryk til at give større fleksibilitet, når det skal bestemmes, om en funktion skal være synlig eller aktiveret.
Booleske udtryk kan indeholde de booleske operatorer (NOT, AND, OR) kombineret med en foruddefineret syntaks for evaluering af visse betingelser. Mange af disse betingelser tester et bestemt objekt. Identiteten af dette "objekt i fokus" (det objekt, der testes) afhænger af den specifikke kontekst for aktiveringsudtrykket:
Når der angives en værdi, som skal testes mod et af disse udtryk, antages værdien at være en streng, bortset fra de tilfælde, hvor følgende konverteringer udføres uden fejl:
Der er en komplet definition af XML-syntaksen for aktivering i dokumentationen til udvidelsespunkter for alle udvidelser, der definerer et enablement-element så som org.eclipse.ui.popupMenus.
Disse generelle booleske udtryk fandtes ikke i versioner før R3.0. Følgende foruddefinerede udtryk blev brugt til at evaluere visse betingelser uden at bygge et generelt udtryk. Bemærk, at alle udtrykkene nu kan udtrykkes med den mere generelle syntaks. De foruddefinerede udtryk kan stadig bruges sådan:
objectClass - sand, hvis hvert objekt i valget er en underklasse af eller implementerer klassen.
objectState - sand, hvis den navngivne attribut er lig med den angivne værdi. IActionFilter hjælper med at evaluere udtrykket. Et funktionsfilter beregner dynamisk aktiveringskriterierne for en funktion baseret på målvalget og værdien af navngivne attributter.
systemProperty - sand, hvis den navngivne systemegenskab er lig med den angivne værdi.
pluginState - angiver, om den angivne plugin efter id skal være installeret eller aktiveret
Følgende kodestykker repræsenterer f.eks. aktiveringsudtryk, som kan bruges til en hypotetisk funktion i et funktionssæt:
<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>
Læs referencedokumentationen til udvidelsespunkterne for at få mere uddybende eksempler på udtrykkene og en komplet beskrivelse af XML.
Følgende tabel viser de udvidelsespunkter, der bidrager med funktioner, og opsummerer, hvordan XML-markup-attributter og booleske udtryk kan bruges til at påvirke aktivering.
Navn på udvidelsespunkt |
Attributter, der påvirker aktivering |
Booleske udtryk |
---|---|---|
enablesFor - angiver det valgantal, der skal opfyldes for at aktivere funktionen valgklasse - den klasse, som de valgte objekter skal være en underklasse af eller implementere for at aktivere funktionen valgnavn - et filter med jokertegn, der kan bruges til objekterne i valget. |
visibility - en boolesk udtryk. Styrer, om menupunktet er synligt på menuen. enablement - en boolesk udtryk. Styrer, om menupunktet er aktiveret på menuen. enablesFor -attributten og valgklassen og valgnavnet skal være opfyldt, før aktiveringsudtrykket anvendes. |
|
(Kun til objektbidrag.) objectClass - angiver den klasse, som objekter i valget skal være underklasse af eller implementere (Både for objektbidrag og fremviserbidrag.) enablesFor - angiver det valgantal, der skal opfyldes for at aktivere funktionen valgklasse - den klasse, som de valgte objekter skal være en underklasse af eller implementere for at aktivere funktionen valgnavn - et filter med jokertegn, der kan bruges til objekterne i valget.
|
(Både for objektbidrag og fremviserbidrag.) visibility - en boolesk udtryk. Styrer, om menupunktet er synligt på menuen. enablement - en boolesk udtryk. Styrer, om menupunktet er aktiveret på menuen. enablesFor -attributten og valgklassen og valgnavnet skal være opfyldt, før aktiveringsudtrykket anvendes. |
Muligheden for at definere indholdstyper (se Indholdstyper) kan kombineres med booleske udtryk for at definere meget specifikke aktiverings- eller synlighedsbetingelser baseret på en ressources indholdstype. Følgende kodestykke lader f.eks. kun et pop op-menupunkt være synligt, hvis indholdet af den valgte fil matcher plugin'ens specialiserede indholdstype.
<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" ...Attributten contentTypeId kan bruges i et objectState-udtryk til at undersøge indholdstypen af den valgte XML-fil. Det giver en plugin mulighed for at anvende en meget specifik indholdskontrol, før der aktiveres eller vises menufunktioner, som er relateret til bestemte filtyper. Der er flere oplysninger om indholdstypeudvidelsen i Indholdstyper.