ExpandableComposite toimii samalla tavalla kuin Group-ohjausobjekti. Se voi
pienentää sivun osan, jossa on käytettävissä vaihdon ohjausobjekti:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(),
ExpandableComposite.TREE_NODE|
ExpandableComposite.CLIENT_INDENT);
ec.setText("Expandable Composite title");
String ctext = "Luodaan niin pitkä teksti, että "+
"sitä voi käyttää ExpandableComposite-ohjausobjektin sisältönä. "+
"ExpandableComposite-ohjausobjektin avulla joko piilotetaan tai
esitetään teksti"+
"käyttämällä vaihdon ohjausobjektia.";
Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
ec.setClient(client);
ec.addExpansionListener(new ExpansionAdapter() {
public void expansionStateChanged(ExpansionEvent e) {
form.reflow(true);
}
});
ExpandableComposite-ohjausobjekti kelpuuttaa lukuisia tyylejä, jotka
vaikuttavat sen
ulkoasuun ja toimintaan. TREE_NODE-tyyli luo vaihdon ohjausobjektin, jota käytetään
rakenteen widget-toiminnossa solmujen laajentamiseen ja pienentämiseen. TWISTIE taas luo
kolmenvälisen vaihdon. EXPANDED luo ohjausobjektin laajennetussa alkutilassa. Jos
käytössä on COMPACT-tyyli, ohjausobjekti ilmoittaa pienennetyn tilan leveyden, jotta
sivun osa mahtuu otsikkoriville (esimerkiksi pienennetyssä tilassa osa on niin kapea kuin mahdollista). CLIENT_INDENT-tyyli
sisentää asiakasobjektin siten, että se on tasattu otsikon kanssa (muuten asiakasobjekti
tasataan vaihdon ohjausobjektin kanssa).
ExpandableComposite-ohjausobjekti hahmontaa vaihdon ohjausobjektin ja otsikon. Asiakasobjektiksi määritetään laajentava tai pienentävä ohjausobjekti. Huomaa, että asiakasobjektin pitää olla ExpandableComposite-ohjausobjektin suora alielementti.
ExpandableComposite-ohjausobjekti aloittaa
ExpansionEvent-ohjausobjektit, kun
laajennustila muuttuu. Ohjausobjektiin pitää lisätä laajennuksen kuuntelutoiminto, jotta lomakkeen teksti
voidaan kierrättää tilan muuttuessa. Laajennus muuttaa ExpandableComposite-ohjausobjektin kokoa,
mutta muutosta ei kuitenkaan tapahdu ennen kuin pääobjektia seuraavan kerran asetellaan. Siksi
muutos pitää pakottaa.
Section on ExpandableComposite-ohjausobjektin
aliluokka, joka lisää ylimääräisiä
toimintoja. Sen avulla lomake yleensä pilkotaan lohkoiksi, joista jokaisella on oma otsikko ja
valinnainen
kuvaus. Kun käytössä on tyyli
Section.TITLE_BAR tai tyyli Section.SHORT_TITLE_BAR, otsikon alueen
koristelut edistävät ryhmittelyä.
Toisin kuin ExpandableComposite, Section käsittelee laajennuksen
tilan muutoksen yhteydessä tapahtuvat tekstin kierrätykset automaattisesti. Laajennuksen tilan muutoksista
ilmoittamista voi käyttää myös lohkon sisällön lazy-luontiin, joka tapahtuu vasta laajennuksen jälkeen.