Munkaterület a felszín alatt

A munkaterület osztályok és felületek átfogó halmazát biztosítja összetett felhasználói felületek összeépítéséhez. Szerencsére valami egyszerű létrehozásához nem kell az összeset megismerni. Először a munkaterület felhasználói felületen kitett alapelveket és ezek megfelelő struktúráit tekintjük meg a felszín alatt.

Munkaterület

A munkaterület kifejezést "arra az ablakra használtuk, amely a platform indításakor megjelenik." Ássunk egy kicsi mélyebbre, és tekintsük meg a munkaterület néhány vizuális összetevőjét.

Munkaterület három nézettel és egy szerkesztővel az oldalon

A leírás további részében a munkaterület kifejezéssel a munkaterület-ablakra (IWorkbenchWindow) hivatkozunk. A munkaterület-ablak a munkaterület legfelső szintű ablaka. Ez az a keret, amely a menüsort, eszköztárat, állapotsort, billentyűparancs-sort és oldalakat tartalmazza. Általában nem kell programozni a munkaterület-ablakot. Csak tudni kell, hogy ott van.

Megjegyzés:  Több munkaterület-ablak nyitható meg; minden munkaterület-ablak önmagában zárt, szerkesztőket és nézeteket tartalmazó elem, így csak egyetlen munkaterület-ablakra koncentrálunk.

A felhasználó nézőpontjából a munkaterület nézeteket és szerkesztőket tartalmaz. Néhány másik osztály valósítja meg a munkaterület-ablakot. 

Oldal

A munkaterület-ablakban található egy oldal (IWorkbenchPage) amely részeket tartalmaz. Az oldal a részek csoportosításának megvalósítási mechanizmusa. Nem kell programozni az oldalt, de megjelenik a programozás és hibakeresés kontextusában.

Perspektívák

A perspektívák egy további szervezési réteget biztosítanak a munkaterület-oldalon belül.  A perspektíva a nézetek, elrendezéseik és egy adott feladatra alkalmazható tevékenységek megfelelő gyűjteményét adja meg.  A felhasználók a feladatok közötti mozgás során kapcsolhatnak a perspektívák között.   A megvalósítás szempontjából a felhasználó aktív perspektívája szabályozza, hogy mely nézetek jelennek meg a munkaterület-oldalon, valamint ezek pozícióját és méretüket.  A szerkesztőkre nincsenek hatással a perspektíva módosításai.

Nézetek és szerkesztők

A nézeteken és szerződéseken a megvalósítási részleteken túl megmutatunk néhány általános bedolgozó-programozási példát. Vizuális összetevő munkaterülethez adásakor el kell dönteni, hogy nézetet vagy szerkesztőt kíván megvalósítani. Ez hogyan dönthető el?

Mindkét esetében a nézet vagy szerkesztő összeépítése egy általános életciklusnak megfelelően történik.

Az életciklus során az események a tartalmazó munkaterület-oldalról kerülnek aktiválásra, és értesítik az érintett részeket a nézetek és szerkesztők megnyitásáról, aktiválásáról, letiltásáról és bezárásáról.

Egyszerűnek tűnik? Az lehet.Ez a munkaterület-nézetek és- szerkesztők szépsége.Ezek csak felületi elemtárolók, és az igénynek megfelelően bonyolultak vagy egyszerűek lehetnek.A legegyszerűbb nézeteket láthattuk korábban, a hello world nézet megvalósításakor. Most, hogy egy kicsit jobban áttekintettük a dolgokat, nézzük meg újra a kódot.

   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() {
         // fókusz beállítása a saját vezérlőelemhez. Egy címke esetén ennek
         // nincs sok értelme, de az összetettebb vezérlőelemek esetén
         // el kell döntenie, hogy melyik kapja a fókuszt.
      }
   }

A dispose() metódust nem kell megvalósítani, mivel nem tettünk semmit, de létrehoztunk egy címkét a createPartControl(parent) metódusban. Ha foglaltunk le UI erőforrásokat - mint például a képek vagy betűkészletek - akkor itt el kell távolítanánk őket. Mivel a ViewPart osztályt kiterjesztettük, öröklődik a a dispose() metódus "semmit sem tesz" megvalósítása.