Az ExpandableComposite
hasonlóan viselkedik
a Group
vezérlőelemhez, de képes egy oldal egy részét
összehúzni egy kapcsoló vezérlőelemmel:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Kibontható összetétel címe"); String ctext = "Létrehozunk egy hosszabb szöveget így "+ "felhasználhatjuk egy kibontható összetétel tartalmaként. "+ "A kibontható összetételt szöveg elrejtésére vagy mutatására használjuk a "+ "kapcsoló vezérlőelem használatával"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
Az ExpandableComposite
vezérlőelem számos stílust elfogad,
melyek a megjelenését és viselkedését befolyásolják. A
TREE_NODE
stílus létrehozza a fa felületi elemben
csomópontok kibontására és összehúzására használt kapcsoló
vezérlőelemet, míg a TWISTIE
háromszög-stílusú kapcsolót
hoz létre. Az EXPANDED
használatával a vezérlőelem kibontott
kezdeti állapotban jön létre. A COMPACT
stílus használatával
a vezérlőelem a címsor megjelenítéséhez éppen elegendő szélességet fog
jelenteni összehúzott állapotban (azaz összehúzott állapotban vízszintesen
is olyan tömör lesz, amennyire lehetséges). Végül, a
CLIENT_INDENT
használata az ügyfelet annyira fogja behúzni,
hogy a címhez igazodjon (egyébként az ügyfél a kapcsoló vezérlőelemhez lesz
igazítva).
A kibontható összetétel maga a kapcsoló vezérlőelem és a cím megjelenítéséért felel. A kibontásra vagy összehúzásra szolgáló vezérlőelem ügyfélként van beállítva. Vegye figyelembe azt a követelményt, hogy az ügyfélnek a kibontható összetétel közvetlen utódjának kell lennie.
A kibontható összetétel ExpansionEvent
objektumokat bocsát
ki, amikor a kibővítés állapota megváltozik. Egy kibővítés figyelő
hozzáadása szükséges a vezérlőelemhez az űrlap megfelelő
újrarajzolásához állapotváltozás esetén. Ennek oka, hogy a kibővítés
megváltoztatja a kibővíthető összetétel méretét, de a változás addig nem
lép életbe, amíg a szülő legközelebb ki nem lesz rajzolva (ezért kell
kényszeríteni).
A Section
a kibővíthető összetétel alosztálya, amely
további képességekkel egészíti azt ki. Általában egy űrlap több, saját
címmel és választható leírással rendelkező szakaszba particionálására
használják. A Section.TITLE_BAR
vagy a
Section.SHORT_TITLE_BAR
stílusok használatával a címterület
körüli dekoráció tovább bővíti a csoportosítást.
Az ExpandableComposite
-al ellentétben a Section
automatikusan kezeli az újrarajzolást a kibővítés változásakor. A
kibővítési értesítések másik érdekes felhasználása a szakasz tartalmának
késleltetett létrehozása, amit így a szakasz tartalmának kibővítéséig
lehet késleltetni.