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