Toiminto on tietynlaisen tehtävän ympärillä oleva looginen toimintoryhmä. Esimerkiksi Java-ohjelman kehittäminen on toiminto, jonka ympäristön käyttäjät usein tekevät, ja JDT määrittää monia käyttöliittymälisäyksiä (näkymät, muokkausohjelmat, perspektiivit, oletusasetukset jne.), jotka ovat hyödyllisiä tämän toiminnon tekemisessä. Ennen toiminnon määrityksen tekotapaa kuvataan, miten niitä voi käyttää käyttöliittymän "siistimisessä".
Toiminto paljastetaan käyttäjälle, vaikka se ei ehkä olekaan täysin ilmeinen uudelle käyttäjälle. Kun toiminto otetaan käyttöön ympäristössä, kyseiseen toimintoon liittyvät käyttöliittymän lisäykset tulevat näyttöön. Kun toiminto poistetaan käytöstä ympäristöstä, sen käyttöliittymän lisäyksiä ei näy.
Käyttäjät voivat ottaa toimintoja käyttöön ja poistaa niitä käytöstä
Yleiset > Toiminnot -oletusasetussivulta. (Toimintoihin viitataan käyttöliittymässä
englanniksi nimellä "capabilities", vaikka sovellusohjelman yhteydessä
käytetään käsitettä "activity").
Tietyt käyttäjän toimet ovat toiminnon käyttöönoton liipaisukohtia. Esimerkiksi uuden Java-projektin luonti voi liipaista Java-kehitystoiminnon käyttöönoton. Tällä tavalla uusi toiminto paljastetaan käyttäjälle, kun hän tarvitsee sitä, ja vähitellen käyttäjät oppivat käytettävissään olevista toiminnoista ja siitä, miten ne vaikuttavat käyttöliittymään. Kun käyttäjä aloittaa ympäristön ensimmäisen kerran, on suositeltavaa, että mahdollisimman vähän toimintoja on käytössä, jotta sovellus olisi mahdollisimman yksinkertainen. Esittelysivulla tehtyjen valintojen mukaan voidaan määrittää, mitkä toiminnot tulee ottaa käyttöön.
Edellä (ohjeaiheessa Perspektiivit) on kuvattu, miten erilaisia näkymäasetteluja ja toimintojoukkoja voi järjestellä tehtäviksi. Mihin toimintoja tarvitaan? Vaikka perspektiivit ja toiminnot määrittävät samankaltaisia tehtäviä, suurin ero on siinä, miten käyttöliittymän lisäys lisäosalle liittyy niihin. Käyttöliittymän lisäykset liitetään perspektiiveihin lisäyksen tunnisteen määrityksessä. Toisin sanoen lisäosa määrittää, mihin perspektiiveihin sen näkymät ja toimintojoukot kuuluvat. Lisäosat voivat myös vapaasti määrittää omat perspektiivinsä. Silloinkin, kun perspektiivi ei ole käytössä, käyttäjä voi siirtyä perspektiiviin liittyviin näkymiin ja toimintoihin esimerkiksi komennolla Näytä näkymä.
Toiminnot ovat ylempi rakennetaso. Yksittäiset lisäosan lisäykset eivät ole tietoisia toiminnoista, eivätkä ne viittaa toimintoihin tunnisteidensa määrittelyissä. Pikemmin toimintojen odotetaan olevan määritettyjä ylemmällä tasolla, esimerkiksi ympäristön integroinnin tai kokoonpanon määrityksen tai tuotteen asennuksen yhteydessä. Yksittäiset lisäosat eivät tavallisesti määritä uusia toimintoja, ellei lisäosa ole järjestelmätason lisäosa, jonka järjestelmien yhtenäistäjä on määrittänyt. Tavallisesti järjestelmien yhtenäistäjä määrittää, miten toiminnot ryhmitetään toiminnoiksi ja mitkä ovat oletusarvon mukaan käytössä. Toiminnot liitetään käyttöliittymän lisäyksiin toimintojen mallisidoksien avulla, jotka ovat malleja, joita verrataan lisäosien tekemien käyttöliittymän lisäysten tunnuksiin. Seuraava esimerkki auttaa ymmärtämään nämä käsitteet.
Toiminnot määritetään org.eclipse.ui.activities-laajennuspisteen avulla. Ajatellaan yksinkertaistettua versiota siitä, miten Eclipse SDK -lisäosa määrittä kaksi toimintoa - yhden Java-ohjelman kehitystä varten ja toisen lisäosien kehitystä varten:
<extension point="org.eclipse.ui.activities"> <activity name="Java Activity" description="Developing Java Software" id="org.eclipse.javaDevelopment"> </activity> <activity name="Plug-in Activity" description="Developing Eclipse Plug-ins" id="org.eclipse.plugInDevelopment"> </activity> ...
Toiminnoille annetaan nimi ja kuvaus, jotka voidaan näyttää käyttäjälle aina, kun käyttäjä ottaa toimintoja käyttöön tai poistaa niitä käytöstä, tai muuten näytettäviä toimintoa koskevia tietoja. Toiminnon tunnusta käytetään määritettäessä mallisidoksia tai muita toimintojen välisiä suhteita. On mahdollista päättää esimerkiksi, että jokin toiminto edellyttää toista toimintoa.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
Ennakkoehtosidos määrittää, että lisäosan kehitystoiminnon voi ottaa käyttöön vain, kun Java-kehitystoiminto on käytössä. Toisiinsa liittyvät toiminnot voi sitoa myös luokkiin, jotka näytetään käyttäjälle, kun käyttäjä käsittelee toimintoja.
<category name="Development" description="Software Development" id="org.eclipse.categories.developmentCategory"> </category> <categoryActivityBinding activityId="org.eclipse.javaDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding> <categoryActivityBinding activityId="org.eclipse.plugInDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding>
Luokka ryhmittää toisiinsa liittyvät kehitystoiminnot yhteen. Tämä luokka näkyy käyttäjälle, kun käyttäjä määrittää toimintoja manuaalisesti.
Toiminnot liitetään käyttöliittymän lisäyksiin mallisidoksilla. Toiminnon mallisidontaan käytettävä mallin täsmäytys toimii säännöllisten lausekkeiden kohdalla paketissa java.util.regex kuvattujen sääntöjen mukaan. Työympäristön käyttämät mallit jakautuvat kahteen osaan. Ensimmäinen osa käyttää käyttöliittymän laajennuksen lisäävän lisäosan tunnusta. Toinen osa on tunnus, jota lisäosa itse käyttää määrittäessään lisäyksen (joka voi sisältää myös lisäosan tunnuksen osana tunnusta, mutta ei välttämättä). Käytössä on seuraava muoto:
plug-in-identifier + "/" + local-identifierEsimerkiksi seuraava toiminnon mallisidos määrittää, että käyttöliittymän lisäys minkä tahansa JDT-lisäosan tunnuksesta (org.eclipse.jdt.*) liitetään Java-kehitystoimintoon sen paikallistunnuksesta (.*) riippumatta.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Seuraava sidontasääntö on tarkempi. Se määrittää, että JDT-ydinosassa (org.eclipse.jdt.core) määritetty lisäys javanature liittyy Java-kehitystoimintoon.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Kuten on nähtävissä, toimintojen mallisidontojen avulla voi liittää suuren joukon lisäyksiä tiettyyn toimintoon tai liittää erittäin tarkkaan määritettyjä lisäyksiä toimintoon. Toiminnot vaikuttavat seuraaviin lisäyksiin:
Työympäristön käytäntö (lisäosan tunnus + paikallistunnus) mahdollistavat helpon sidonnan lisäosiin, jotka eivät välttämättä noudata nimeämiskäytäntöä, jossa niiden käyttöliittymän lisäysten tunnus liitetään lisäosan tunnuksen eteen. Toimintojen sovellusohjelmaliittymien kanssa suorassa yhteydessä olevat lisäosat voivat vapaasti käyttää omaa muotoaan lisäysten yksilöintiin ja näiden nimien suhteen tapahtuvaan mallin täsmäytykseen.
Toiminnot liitetään ohjeen lisäyksiin samalla mallin täsmäytyksen tavalla kuin käyttöliittymän lisäysten osalta. Tunnuksen toinen osa (paikallistunnus) osoittaa sisällysluettelotiedoston nimen. Esimerkiksi seuraava toiminnon mallisidos liittää kaikki JDT-lisäosien (org.eclipse.jdt.*) lisäämät sisällysluettelotiedostot Java-kehitystoimintoon:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Kun Java-kehitystoiminto poistetaan käytöstä, JDT-lisäosien lisäämät ohjekirjat tai niiden alikirjat (sisällysluettelot, joihin JDT-kirjat viittaavat tai jotka viittaavat JDT-kirjoihin), vaikka ne olisivat toisen lisäosan lisäämiä, eivät näy ohjeen käyttöliittymässä. Näiden kirjojen ohjeaiheet eivät näy myöskään haun tuloksissa. Tapauksissa, joissa JDT-sisällysluetteloita ei näytetä ensisijaisina sisällysluetteloina, vaan ne on linkitetty toisesta sisällysluettelosta näkymään kirjan alirakenteina, JDT-toiminnon poistaminen käytöstä piilottaa alirakenteet. Ne sisältävä kirja näyttää sisältävän vähemmän ohjeaiheita käyttöliittymässä.
Tarkempien sidontasääntöjen avulla voi liittää toimintoja valittuihin sisällysluetteloihin lisäosista, jotka lisäävät useita sisällysluetteloita ohjejärjestelmään. Esimerkiksi seuraava toiminnon mallisidos liittää "Examples"-sisällysluettelon Java-kehityksen esimerkit -toimintoon.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Tällaisella mallisidoksella Java-kehityksen esimerkkien poistaminen käytöstä piilottaa "Esimerkit"-osan "JDT-lisäosan sovelluskehittäjän opas" - julkaisusta.
Työympäristön toimintotuki sisältää sovellusohjelmaliittymän, jolla voi käsitellä määritettyjä toimintoja ja muuttaa niiden käyttöönoton tilaa. Useimpien lisäosien ei tarvitse välittää tästä sovellusohjelmaliittymästä, mutta se on hyödyllinen toteutettaessa toiminto, jonka avulla käyttäjät voivat käsitellä toimintoja, tai toteutettaessa tietyn toiminnon laukaisevia liipaisukohtia. Oletuksena on, että toimintoja sovellusohjelmaliittymän kautta käsittelevä lisäosa on melko tietoinen tavoista, joilla toiminnot on määritetty tietylle tuotteelle. Esimerkiksi työympäristö itse käyttää sovellusohjelmaliittymää Java-kehityksen ja muiden vastaavien toimintojen liipaisussa. Seuraavassa kuvataan, miten työympäristö käyttää yleistä toimintojen sovellusohjelmaliittymää liipaisimien toteutukseen.
Työympäristössä kaikkien toimintojen keskus on IWorkbenchActivitySupport. Toimintojen tuki toimii yhdessä IActivityManager-rajapinnan kanssa. Lisäosat voivat saada toimintojen tuen ilmentymän työympäristöstä ja siitä toimintojen valvontaohjelman.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();Seuraava katkelma ottaa käyttöön Java-kehitystoiminnon (jos se ei ole jo käytössä). Se näyttää liipaisimen yksinkertaistetun version.
... //the user did something Java related. Enable the Java activity. Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); if (enabledIds.add("org.eclipse.javaDevelopment")) workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
IActivityManager määrittää myös käytännön, jolla haetaan kaikki määritetyt toiminto- ja luokkatunnukset ja tiettyyn tunnukseen liittyvä IActivity tai ICategory. Näiden objektien avulla voi tutkia toiminnon tai luokan määrittelyä sovellusohjelmaliittymässä, esimerkiksi hakea mallisidokset tai ennakkoehtosidokset. Toimintojen hallintaohjelmaan tai toimintoihin ja luokkiin voi rekisteröidä kuuntelutoimintoja, jotka havaitsevat muutokset tietyn toiminnon määrittelyssä tai toimintojen hallintaohjelman muutokset. Lisätietoja on paketissa org.eclipse.ui.activities.