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.