Kontekstin avulla voi vaikuttaa siihen, mitkä komennot ovat käyttäjän käytettävissä tietyllä hetkellä. Kontekstit ovat dynaamisempia kuin tapahtumat. Kun tapahtuma edustaa suurta joukkoa toimintoja, jotka ovat käyttäjän käytettävissä suurimman osan ajasta, kontekstit kuvaavat käyttäjän mahdollisuudet tietyllä hetkellä. Esimerkiksi tekstin muokkauksen aikana käyttäjän valittavissa olevat komennot voivat poiketa komennoista, jotka ovat käyttäjän valittavissa Java-tekstin muokkauksen tai pakettien selausnäkymässä pakettien selailun aikana.
Kontekstit esitellään org.eclipse.ui.contexts-laajennuspisteessä. Esimerkiksi seuraava konteksti on määritetty tekstin muokkausta varten:
<extension point="org.eclipse.ui.contexts"> <context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>Konteksteille osoitetaan nimi ja kuvaus, joita käytetään kontekstia koskevien tietojen käyttäjälle näyttämisen yhteydessä. Kontekstin tunnusta käytetään sidottaessa tiettyyn kontekstiin käyttöliittymän lisäyksiä, esimerkiksi komentoja.
Kontekstit ovat luonteeltaan hierarkkisia. Kun konteksti on aktiivinen, kontekstissa ja myös sen pääkonteksteissa käytettävissä olevat komennot ovat käytettävissä. Tämä on hyödyllistä sellaisten kontekstitasojen määrityksessä, jotka liikkuvat erittäin yleisistä tilanteista erityisempiin konteksteihin. Huomaa, että edellä olevassa kontekstin määrittelyssä kontekstiin on liitetty pääkontekstin tunnus:
<context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>Pääkonteksti määrittää yleisemmän ikkunassa toimimisen kontekstin. Sen pääkonteksti määrittää vielä yleisemmän ikkunassa tai valintaikkunassa toimimisen kontekstin.
<context name="%context.window.name" description="%context.window.description" id="org.eclipse.ui.contexts.window" parentId="org.eclipse.ui.contexts.dialogAndWindow"> </context> <context name="%context.dialogAndWindow.name" description="%context.dialogAndWindow.description" id="org.eclipse.ui.contexts.dialogAndWindow"> </context>
Tähän mennessä on vain määritetty kontekstien hierarkioita. Konteksti tulee hyödylliseksi, kun siihen viitataan toisen käyttöliittymän lisäyksen kuvauksessa. Yleisimmin konteksteja käytetään näppäinten sidontasäännöissä. Kun konteksti liittyy näppäimen sidontasääntöön, näppäimen sidontasääntö on voimassa vain silloin, kun käyttäjä on kyseisessä kontekstissa. Esimerkiksi seuraava merkintä määrittää näppäimen sidontasäännön kontekstiksi juurivalintaikkunan ja ikkunan kontekstin:
<extension point="org.eclipse.ui.bindings"> <key sequence="M1+X" contextId="org.eclipse.ui.contexts.dialogAndWindow" commandId="org.eclipse.ui.edit.cut" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/> </extension>
Työympäristön kontekstin tuki sisältää sovellusohjelmaliittymän, jolla voi käsitellä määritettyjä konteksteja ja määrittää ehtoja, joiden mukaan tietty konteksti tulee ottaa käyttöön. Useimpien lisäosien ei tarvitse välittää tästä sovellusohjelmaliittymästä, mutta se on hyödyllinen yksityiskohtaisten näkymien tai uusia konteksteja määrittävien muokkausohjelmien määrityksessä.
Työympäristön kontekstityöskentelyn lähtökohta on IContextService. Lisäosiin voi hakea yleiskontekstituki-ilmentymän työympäristöstä.
IContextService contextService = (IContextService)PlatformUI.getWorkbench() .getService(IContextService.class);
Voit noutaa IContextService-palvelun, IHandlerService-palvelun ja IBindingService-palvelun kaltaiset palvelut IServiceLocator-rajapinnan avulla. IWorkbench, IWorkbenchWindow ja IWorkbenchSite ovat kaikki IServiceLocator-rajapintoja.
IContextService määrittää yhteyskäytännön kaikkien määritettyjen tai käyttöön otettujen kontekstien tunnusten tai tiettyyn tunnukseen liitetyn Context-olion noutoon. Näiden objektien avulla voi tutkia kontekstin määrittelyä sovellusohjelmaliittymässä, esimerkiksi hakea tunnuksen, nimen tai pääkontekstin tunnuksen. Kontekstin hallintaohjelmaan tai konteksteihin voi rekisteröidä kuuntelutoimintoja, jotka havaitsevat tietyn kontekstin määrittelyn tai kontekstin hallintaohjelman muutokset. Lisätietoja on paketissa org.eclipse.core.commands.contexts.
Kontekstit voidaan ottaa käyttöön ohjelmallisesti:
IContextActivation activation = contextService.activateContext("org.eclipse.ui.textEditorScope");
Voit ottaa aktiivisen kontekstin pois käytöstä IContextActivation-sanakkeen avulla. Varmista, että aktivoit vain määritetyn kontekstin.
Jos haluat aktivoida tarkemmin määritellyn kontekstin omassa osuudessasi (näkymässä tai muokkausohjelmassa), voit aktivoida oman kontekstisi sivuston osuuspalvelun paikantimen avulla. Osuuden IContextService-palvelurajapinta ottaa kontekstin käyttöön tai poistaa sen käytöstä, kun oma osuutesi aktivoidaan tai poistetaan käytöstä. Kun osuus on poistettu, myös konteksti poistetaan.