ExpandableComposite-ohjausobjekti ja lohkon ohjausobjekti

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.