Loogiset lausekkeet ja toimintosuodattimet

Kun lisäosa lisää toiminnon työympäristön käyttöliittymään jollakin valikon laajennuspisteistä, se voi määrittää ehdot, joiden mukaan valikon kohde on näkyvä tai käytössä valikossa. Yksinkertaisten käyttöönottoehtojen, kuten valintalaskinten ja valintaluokkien, lisäksi lisäosat voivat käyttää loogisia lausekkeita, jotka lisäävät joustavuutta toiminnon näkyvyyden tai käytettävissä olon määrittämiseen.

Loogiset käyttöönottolausekkeet

Loogiset lausekkeet voivat sisältää Boolen operaattoreita (NOT, AND, OR) yhdistettyinä ennalta määritettyyn rakenteeseen tiettyjen ehtojen laskentaa varten. Monet näistä ehdoista tarkastavat tietyn objektin. "Tarkennetun objektin" (testattavan objektin) identiteetti vaihtelee käyttöönottolausekkeen nimenomaisen yhteyden mukaan:

Kun määritetään arvo, jota käytetään näiden lausekkeiden testauksessa, arvon oletetaan olevan merkkijono, ellei jokin seuraavista muunnoista onnistu:

Käyttöönoton XML-syntaksin kattava määritelmä on kaikkien enablement-elementin määrittävien laajennuspisteiden dokumentaatiossa, esimerkiksi org.eclipse.ui.popupMenus.

Nämä yleiset loogiset lausekkeet eivät olleet käytettävissä ennen versiota 3.0. Seuraavia ennalta määritettyjä lausekkeita käytettiin tiettyjen ehtojen laskemiseen luomatta yleislauseketta. Huomaa, että nämä lausekkeet voi nykyään ilmaista yleisemmällä syntaksilla. Ennalta määritettyjä lausekkeita voi edelleen käyttää seuraavasti:

Esimerkiksi seuraavat katkelmat kuvaavat käyttöönottolausekkeita, joita voisi käyttää kuvitellun toiminnon suhteen toimintojoukossa:

<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> 

Laajennuspisteiden ohjeissa on näiden lausekkeiden tarkempia esimerkkejä ja XML:n kattava kuvaus.

Seuraava taulukko sisältää toimintoja lisäävät laajennuspisteet ja esittää, miten XML-merkintämääritteitä ja loogisia lausekkeita voi käyttää niin, että ne vaikuttavat käyttöönottoon.

Laajennuspisteen nimi

Käyttöönottoon vaikuttavat määritteet

Loogiset lausekkeet

viewActions,

editorActions,

actionSets

enablesFor - määrittää valintamäärän, jonka tulee täyttyä, että toiminto otetaan käyttöön

selection class - luokka, jonka aliluokkia valittujen objektien tulee olla tai joka niiden tulee toteuttaa, että toiminto otetaan käyttöön

selection name - yleismerkkisuodatin, jota voidaan käyttää valinnan objekteihin.

visibility - looginen lauseke.  Määrittää, näkyykö valikon vaihtoehto valikossa.

enablement - looginen lauseke.  Määrittää, onko valikon vaihtoehto käytettävissä valikossa.  enablesFor-määrite ja selection class ja name, ja ne on täytettävä ennen käyttöönottolausekkeen toteutusta.

popupMenus

(Vain objektien lisäyksiin.)

objectClass - määrittää luokan, jonka aliluokkia valinnan objektien on oltava tai joka niiden tulee toteuttaa

(Sekä objektien että katseluohjelmien lisäyksiin)

enablesFor - määrittää valintamäärän, jonka tulee täyttyä, että toiminto otetaan käyttöön

selection class - luokka, jonka aliluokkia valittujen objektien tulee olla tai joka niiden tulee toteuttaa, että toiminto otetaan käyttöön

selection name - yleismerkkisuodatin, jota voidaan käyttää valinnan objekteihin.

 

(Sekä objektien että katseluohjelmien lisäyksiin)

visibility - looginen lauseke.  Määrittää, näkyykö valikon vaihtoehto valikossa.

enablement - looginen lauseke.  Määrittää, onko valikon vaihtoehto käytettävissä valikossa.  enablesFor-määrite ja selection class ja name, ja ne on täytettävä ennen käyttöönottolausekkeen toteutusta.

objectState-lausekkeen käyttö sisältölajien kanssa

Mahdollisuuden määrittää sisältölajeja (katso Sisältölajit) voi yhdistää loogisiin lausekkeisiin, jolloin tuloksena on erittäin tarkkoja käyttöönotto- tai näkyvyysehtoja, jotka perustuvat resurssin sisältölajille. Esimerkiksi seuraava katkelma tekee ponnahdusvalikon näkyväksi vain, jos valitun tiedoston sisältö vastaa lisäosan eriteltyjä sisältölajeja.

<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"
         ...
contentTypeId-määritettä voi käyttää objectState-lausekkeessa tarkistamaan valitun xml-tiedoston sisällön lajin. Tämän avulla lisäosa voi käyttää erittäin tarkkaa sisällöntarkistusta ennen tiettyihin tiedostolajeihin liittyvien valikkotoimintojen ottamista käyttöön tai poistamista käytöstä. Lisätietoja sisältölajin tunnisteesta on ohjeaiheessa Sisältölajit.