Työympäristön sisältö

Työympäristössä on kattava joukko luokkia ja rajapintoja monimutkaisten käyttöliittymien luontia varten. Niitä kaikkia ei kuitenkaan tarvitse tuntea, jos haluaa tehdä jotakin yksinkertaista. Ensiksi tässä tarkastellaan joitakin työympäristön käyttöliittymän käsitteitä ja niiden sisäistä rakennetta.

Työympäristö

Käsitettä työympäristö on käytetty löyhästi viittaamaan "ikkunaan, joka avautuu, kun ympäristö käynnistetään." Seuraavaksi paneudutaan hieman syvemmälle ja tarkastellaan joitakin graafisia osia, jotka muodostavat työympäristön.

Työympäristö, jossa on kolme näkymää ja yksi muokkausohjelma sivulla

Tässä yhteydessä jatkossa käsitteellä työympäristö tarkoitetaan työympäristön ikkunaa (IWorkbenchWindow). Työympäristön ikkuna on työympäristössä oleva päätason ikkuna. Se on kehys, joka sisältää valikkopalkin, työkalurivin, tilarivin, pikakuvakepalkin ja sivut. Periaatteessa työympäristön ikkunaan ei tarvitse ohjelmoida. Riittää, että se on olemassa.

Huomautus:  Voit avata useita työympäristön ikkunoita; jokainen työympäristön ikkuna on kuitenkin oma muokkausohjelma- ja näkymäkokonaisuutensa, joten tässä keskitytään vain yksittäiseen työympäristön ikkunaan.

Käyttäjän näkökulmasta työympäristössä on näkymiä ja muokkausohjelmia. Työympäristön ikkunan toteuttamisessa käytettyjä muita luokkia on vähän. 

Sivu

Työympäristön ikkunan sisällä on yksi sivu (IWorkbenchPage), joka puolestaan sisältää osia. Sivujen avulla ryhmitellään eri osia. Tavallisesti sivu ei tarvitse ohjelmointia, mutta se selviää ohjelmoinnin ja vianmäärityksen yhteydessä.

Perspektiivit

Perspektiivit ovat rakenteen lisäkerros työympäristön sivussa.  Perspektiivi määrittää sopivan kokoelman näkymiä, niiden asettelun ja tiettyyn käyttäjän tehtävään sopivat toiminnot.  Käyttäjät voivat vaihtaa perspektiiviä siirtyessään eri tehtävien välillä.   Toteutuksen kannalta käyttäjän aktiivinen perspektiivi määrittää työympäristön sivulla olevat näkymät ja niiden paikan ja koon.  Perspektiivin vaihto ei vaikuta muokkausohjelmiin.

Näkymät ja muokkausohjelmat

Näkymissä ja muokkausohjelmissa siirrytään toteutuksen yksityiskohdista yleisempään lisäosien ohjelmointiin. Kun työympäristöön lisätään graafinen komponentti, on päätettävä, halutaanko toteuttaa näkymä vai muokkausohjelma. Miten tämä päätös tehdään?

Molemmissa tapauksissa näkymä tai muokkausohjelma kootaan yleisen elinkaaren mukaan.

Tämän elinkaaren aikana sisältävältä työympäristön sivulta laukaistaan tapahtumia tapahtumia ilmoituksena kiinnostuneille osapuolille näkymien tai muokkausohjelmien avauksesta, aktivoinnista, aktivoinnin peruutuksesta ja sulkemisesta.

Eikö olekin yksinkertaista?  Se voi olla. Siihen perustuu työympäristön näkymien ja muokkausohjelmien kauneus. Ne ovat vain widget-objektien pidikkeitä, ja ne voivat olla juuri niin yksinkertaisia tai monimutkaisia kuin on tarpeen. Kaikkein yksinkertaisin näkymä esitettiin edellä hello world -näkymän koonnin yhteydessä. Tarkastellaanpa sitä uudelleen nyt, kun tiedetään enemmän siitä, mitä tapahtuu.

   package org.eclipse.examples.helloworld;

   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.SWT;
   import org.eclipse.ui.part.ViewPart;

   public class HelloWorldView extends ViewPart {
      Label label;
      public HelloWorldView() {
      }
      public void createPartControl(Composite parent) {
         label = new Label(parent, SWT.WRAP);
         label.setText("Hello World");
      }
      public void setFocus() {
         // tarkenna widget-objektiini.  Nimiön osalta tällä ei ole
         // juuri mieltä, mutta monimutkaisempien widget-objektijoukkojen
         // osalta päättäisit, mihin tarkennetaan.
      }
   }

Huomaa, että dispose()-metodia ei tarvinnut toteuttaa, sillä tässä luotiin ainoastaan nimiö createPartControl(parent)-metodissa. Jos käyttöliittymän resursseja, kuten kuvia tai fontteja, olisi varattu, ne olisi hävitetty tässä. Koska ViewPart-luokka laajennettiin, peritään dispose()-metodin "do nothing"-toteutus.