Uudelleen kohdennettavat toiminnot

Lisäosan näkymät ja muokkausohjelmat toteuttavat usein toimintoja, jotka ovat merkitykseltään samankaltaisia työympäristön toimintojen kanssa. Tällaisia toimintoja ovat esimerkiksi leikepöydän leikkaus, kopiointi ja liittäminen, näkymän verestys ja ominaisuudet.  Näkymien ja muokkausohjelmien ponnahdusikkunaan voi tulla melkoinen tungos, jos jokaisen näkymän tai muokkausohjelman on määritettävä näille toimille omat toimintonsa ja sisällytettävä ne valikoihinsa. 

Tämän ongelman ratkaisua varten työympäristö määrittää uudelleen kohdennettavia (toiselta nimeltään yleisiä) toimintoja, joita kaikki näkymät ja muokkausohjelmat voivat käsitellä.  Kun näkymä tai muokkausohjelma on aktiivinen, sen käsittelijä ajetaan, kun käyttäjä valitsee toiminnon työympäristön valikosta tai työkalurivistä.  Näin näkymät ja muokkausohjelmat voivat käyttää yhteistä työympäristön valikkotilaa merkitykseltään samankaltaisia toimintoja varten.

IWorkbenchActionConstants dokumentoi kaikki työympäristön toiminnot ja merkitsee uudelleen kohdennettavat toiminnot yleisiksi.  Esimerkiksi seuraava on Ominaisuudet-toiminnon määritys.

public static final String PROPERTIES = "properties"; // Global action. 

Seuraavassa taulukossa on yleiskuvaus joistakin yleisimmistä uudelleen kohdennettavista toiminnoista, joita näkymät ja muokkausohjelmat toteuttavat:

  Tiedosto-valikko Muokkaa-valikko Navigoi-valikko Projekti-valikko
näkymät siirto
uudelleennimeäminen
verestys
ominaisuudet
  siirtyminen
siirtyminen resurssiin
synkronointi muokkausohjelman kanssa
taaksepäin
eteenpäin
ylös
seuraava
edellinen
avaus
sulkeminen
koonti
koonti uudelleen
muokkausohjelmat muunto takaisin
tulostus
etsintä    
näkymät ja muokkausohjelmat   leikkaus
kopiointi
liittäminen
poisto
kaikkien valinta
kumous
uudelleen tekeminen
   

Uudelleen kohdennettavat toiminnot luodaan RetargetAction-luokan avulla.  Seuraava katkelma on WorkbenchActionBuilder-luokasta.

 propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false); 

createGlobalAction-metodi näyttää tarkalleen, miten tehdään RetargetAction.

private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) {
	RetargetAction action;
	if (labelRetarget) {
		action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	else {
		action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	...
	return action;
}

Uudelleen kohdennettavan toiminnon luonnin yhteydessä työympäristö asettaa tunnuksen toiminnolle ja oletusnimiön.  Huomaa, että uudelleen kohdennusta on kahta lajia.  RetargetAction yksinkertaisesti antaa näkymän tai muokkausohjelman toteuttaa toiminnon uudelleen.  LabelRetargetAction antaa lisäksi näkymien ja muokkausohjelmien asettaa toiminnon nimiön uudelleen.   Tästä on hyötyä, kun valikon nimiöstä tehdään tarkempi, esimerkiksi silloin, kun Kumoa-toiminto nimetään uudelleen Kumoa kirjoitus -toiminnoksi.  

Nyt on selvinnyt, miten työympäristö määrittää uudelleen kohdennuksen.  Seuraavaksi tarkastellaan, miten näkymä tai muokkausohjelma voi toimittaa uudelleen kohdennettavan toiminnon toteutuksen.  Tämä tehdään asettamalla toiminnon yleiskäsittelijä.