Jogkizárási nyilatkozat: Az org.eclipse.ui.menus
kiterjesztési pontot az Eclipse 3.2 csak részben valósítja meg. Jelenleg a
kiterjesztési pont nem támogatja a menü- és eszköztár-meghatározásokat és
-kiterjesztéseket (erre a meglévő közreadási kiterjesztéseket kell
használni). Azonban ez az egyetlen olyan mechanizmus, amelyen keresztül a
'szegély' felületelemek a munkaterülethez adhatók. Ez a szakasz azt
mutatja be, hogy a mechanizmus erre a célra hogyan használható.
A 'szegély' felületelemek olyan vezérlők, amelyek egy adott helyre kerülnek telepítésre (az ún. 'szegélyterületre') a Munkaterület ablak külső határán. A legáltalánosabb példa az általános 'állapotsor', amelyet a legtöbb grafikus felület az ablak aljánál helyez el. Az org.eclipse.ui.menus kiterjesztési pont segítségével a bedolgozók nézeteket adhatnak a munkaterülethez. A szegélyt közreadó bedolgozóknak be kell jegyezniük a szegélyt a plugin.xml fájlban és a szegéllyel kapcsolatos konfigurációs információkat kell megadniuk, mint például a megvalósító osztályt, a szegélyt tartalmazó szegélycsoportot (szegélysort), illetve az elrendezési információkat (pl. hogy a szegély kívánja-e a rendelkezésre álló szabad területet használni a szegélyterületen történő elrendezése során).
A közreadott szegély felülete az IWorkbenchWidget elemen belül kerül meghatározásra, de a bedolgozóknak (célszerűbb) az AbstractWorkbenchTrimWidget osztályt kiterjeszteni ahelyett, hogy a felületet nulláról valósítanák meg.
A readmetool példa esetében egy aránylag egyszerű szegély felületi elemet adtunk közre, amely egyszerűen egy karaktersorozatot jelenít meg annak jelzésére, hogy a szegély pillanatnyilag melyik oldalon van rögzítve.
Vessünk egy pillantást ennek a szegélynek a közreadása során használt kiterjesztési pont meghatározására:
A kiterjesztés első szakasza (a 'csoport' meghatározás) egyszerűen a csoport azonosítóját határozza meg, illetve 'helyként' az 'állapot' csoport elejét határozza meg (vagyis az alsó szegélyterület kezdetét). A második szakasz (a 'felületi elem' meghatározás) határozza meg a felületi elem 'osztályának' megvalósítását, illetve a felületi elem 'helyeként' az előzőekben meghatározott csoportot jelöli meg.
Fontos megjegyezni, hogy mindkét esetben a sor trim (szegély) 'típusúként' kerül meghatározásra (amely jelenleg az egyetlen támogatott típus).
Magának a readmetool
példának a telepítése után nézze meg a
ReadmeTrimWidget kitöltése
metódus megvalósítását. Ez
annyiban különbözik az egyéb, a felületi elemek eszköztárakhoz és menükhöz
hozzáadásakor használt fill
metódusoktól, hogy a
megszokottakon kívül azt az 'oldalt' is átadja, ahova a szegély kerül,
hiszen a szegély két terület között tetszőlegesen mozgatható. Ezáltal a
megvalósító a felületi elem megjelenését annak helye alapján módosíthatja,
például a tájolás megváltoztatásával. A jelenlegi megvalósítás egyszerűen
a megjelenített szöveget módosítja úgy, hogy az a pillanatnyi helyzetet
tükrözze. Ezen kívül érdemes megfigyelni a 'dispose'/'fill' életciklus
kezelését: a munkaterület változásainak következtében (vagyis a
perspektíva változásakor vagy a szegély másik oldalra húzásakor) a
dispose
és fill
ismételten meghívásra kerülnek.
Az egyik dolog, ami nem jelenik meg a példa kódban, hogy a
szegélyelrendezés-kezelő függ a felületi elem-kezelő
computeSize
metódusának megfelelő megvalósításától a
szegélyen. A felületi elem képes kell, hogy legyen 'preferált' méretének
kiszámítására és visszaadására, hiszen az elrendezés-kezelés teljes
megvalósításában ennek segítségével kerül megállapításra például az, hogy
mennyi helyre van szükség egy adott szegélyterületen. A
'computeSize
megfelelő megvalósításával kapcsolatosan
megjegyzéseket az SWT dokumentáció tartalmaz.