Mukautetun työympäristön toiminnan "sisääntulokohta" on luokan WorkbenchAdvisor määritys työympäristön kokoonpanon määritystä varten. RCP-lisäosan tulee laajentaa kyseinen abstrakti luokka toimittamaan sovelluskohtaiset kokoonpanot työympäristölle. Selaimen esimerkkiohjelma tekee tämän käyttämällä BrowserAdvisor-luokkaa.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Työympäristön neuvontatoiminto (Workbench advisor) vastaa metodien ohituksesta, jotta työympäristön kokoonpanoon voidaan määrittää halutut asettelut ja ominaisuudet kuten toimintopalkin alkiot tai esittelysivu.
Työympäristön neuvontatoiminnon toimittamilla elinkaarimetodeilla sovellus voi kiinnittyä työympäristön luontiin missä vaiheessa tahansa ja vaikuttaa työympäristön toimintaan. Seuraava luettelo neuvontatoiminnon elinkaarimetodeista, jotka voi ohittaa, on aiheen WorkbenchAdvisor javadoc-dokumentaatiossa.
initialize
- kutsutaan ensimmäisenä; ennen ikkunoita; käytetään kohteiden rekisteröintiinpreStartup
- kutsutaan toisena; alustuksen jälkeen mutta ennen kuin ensimmäinen ikkuna avataan; käytetään kohteiden väliaikaiseen käytöstä poistoon aloituksen tai palautuksen ajaksipostStartup
- kutsutaan kolmantena; ensimmäisen ikkunan avauksen jälkeen; käytetään ottamaan edellisessä vaiheessa käytöstä poistetut kohteet uudelleen käyttöönpostRestore
- kutsutaan, kun työympäristö ja sen ikkunat on luotu uudelleen aiemmin tallennetusta tilanteesta; käytetään palautetun työympäristön säätöönpreWindowOpen
- kutsutaan jokaisen ikkunan avauksen yhteydessä; käytetään määrittämään ikkunan ominaisuuksien (ei toimintopalkkien) kokoonpano fillActionBars
- kutsutaan metodin preWindowOpen
jälkeen ikkunan toimintopalkkien kokoonpanon määritystä vartenpostWindowRestore
- kutsutaan, kun ikkuna on luotu uudelleen aiemmin tallennetusta tilanteesta; käytetään palautetun ikkunan säätöönpostWindowCreate
- kutsutaan, kun ikkuna on luotu joko alkutilanteesta tai aiemmin tallennetusta tilanteesta; käytetään ikkunan säätöönopenIntro
- kutsutaan juuri ennen ikkunan avausta, jotta voidaan luoda mahdollinen esittelyosa.postWindowOpen
- kutsutaan, kun ikkuna on avattu; käytetään ikkunan kuuntelutoimintojen ripustamiseen yms.preWindowShellClose
- kutsutaan, kun käyttäjä sulkee ikkunan komentoliittymän; käytetään ikkunoiden sulkemistoimien esivalvontaan.eventLoopException
- kutsutaan käsittelemään tapahtumasilmukan käyttöhäiriötä; käytetään ilmoittamaan käyttäjälle ongelmatilanteestaeventLoopIdle
- kutsutaan, kun käsiteltäviä tapahtumia ei enää ole; käytetään muiden töiden suoritukseen tai passiiviseksi siirtämiseen, kunnes jonoon syötetään uusia tapahtumiapreShutdown
- kutsutaan heti tapahtumasilmukan lopetuksen jälkeen mutta ennen kuin ikkunoita on suljettu; antaa sovellukselle mahdollisuuden peruuttaa sulkemisenpostShutdown
- kutsutaan viimeisenä, tapahtumasilmukan lopetuksen ja kaikkien ikkunoiden sulkemisen jälkeen; käytetään alustuksessa rekisteröityjen kohteiden rekisteröinnin poistoonRCP-sovellus voi siis ohjata monia työympäristön kokoonpanon määritykseen ja toteutukseen liittyviä asetuksia. Selaimen esimerkkiohjelmassa BrowserAdvisor-luokan ensisijainen tehtävä on määrittää toimintopalkkien kokoonpanoon selaimelle sopivat valikon vaihtoehdot. Tämä suoritetaan fillActionBars-metodilla:
public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { ... BrowserActionBuilder builder = new BrowserActionBuilder(window); getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); builder.fillActionBars(configurer, flags); }
Kyseisessä metodissa työympäristön kokoonpano määritetään erikoistuneella toimintojen koontitoiminnolla, jota käytetään työympäristön toimintopalkkien täyttöön. Lisätietoja toimintojen määrityksestä on ohjeaiheessa Toimintojen määritys. Toistaiseksi keskitymme työympäristön kokoonpanon määritykseen.
Huomaa getWorkbenchConfigurer()-metodin käyttö yllä. Rajapintoja IWorkbenchConfigurer ja IWorkbenchWindowConfigurer käytetään luokan WorkbenchAdvisor kanssa ikkunan mukautukseen. Kyseisten luokkien avulla voit ohittaa useita työympäristön luontiin liittyviä vaiheita monilla eri tasoilla. Esimerkiksi rajapinta IWorkbenchWindowConfigurer määrittää käytännön, joka olettaa työympäristön ikkunassa olevan tietynlaisen ohjauskokoonpanon kuten toimintopalkin, tilarivin, perspektiivipalkin, CoolBar-palkin jne. Kyseisen käytännön avulla voit mukauttaa ja täyttää nämä alkiot. Rajapinta IWorkbenchConfigurer toimii ylemmällä tasolla, ja sen avulla voit säilyttää sovelluskohtaisia tietoja työympäristössä. Luokka WorkbenchAdvisor mahdollistaa näiden kokoonpanon määritystoimintojen käytön yllä mainituissa elinkaarimetodeissa. Alemman tason metodit WorkbenchAdvisor-luokan sisällä voidaan ohittaa, jos oletustoiminta halutaan korvata täysin. Työympäristön neuvontatoiminto voi esimerkiksi ohittaa metodin, joka luo ikkunaan SWT-ohjausobjektit, ja toimittaa näin täysin erilaisen pääikkunan toteutuksen.
Toisin sanoen työympäristön mukautukseen on useita tapoja ja monia eri tasoja, ja kyseisiä toimintatapoja voi käyttää monilla eri tasoilla. Aiheiden WorkbenchAdvisor, IWorkbenchConfigurer ja IWorkbenchWindowConfigurer javadoc-dokumentaatiossa on täydellinen kuvaus käytettävissä olevasta käytännöstä. Tutustu myös luokan BrowserAdvisor täydelliseen toteutukseen, jos haluat tarkastella vaihtoehtoisia toteutustapoja käsitteleviä kommentteja.