Kontroller for utvidbar kompositt og seksjon

ExpandableComposite fungerer på samme måte som kontrollen Group, og kan komprimere en del av en side med kontroll for komprimering/utvidelse:

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Expandable Composite title");
	String ctext = "We will now create a somewhat long text so that "+
	"we can use it as content for the expandable composite. "+
	"Expandable composite is used to hide or show the text using the "+
	"toggle control";
	Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
	ec.setClient(client);
	ec.addExpansionListener(new ExpansionAdapter() {
		public void expansionStateChanged(ExpansionEvent e) {
			form.reflow(true);
		}
	});

Kontrollen ExpandableComposite godtar en rekke stiler som påvirker utseende og funksjonalitet. Stilen TREE_NODE oppretter kontrollen for utvidelse/komprimering som brukes til å utvide og komprimere noder i en tre-widget, mens TWISTIE oppretter et trekantsymbol. Hvis EXPANDED brukes, opprettes kontrollen i den opprinnelige utvidede tilstanden. Hvis stilen COMPACT brukes, rapporterer kontrollen bredden i den komprimerte tilstanden bare tilpasset tittellinjen (det vil si at ved komprimering er den så kompakt som mulig vannrett). CLIENT_INDENT rykker inn klienten som justeres med tittelen (hvis ikke, justeres den med kontrollen for utvidelse/komprimering).

En utvidbar kompositt behandler kontrollen for utvidelse/komprimering og tittelen. Kontrollen for utvidelse eller komprimering er definert som en klient. Merk kravet om at klienten skal være direkte underordnet den utvidbare kompositten.

Utvidbare kompositter starter ExpansionEvent-objekter når en utvidelsestilstand endres. Det må legges til en utvidelseslytter i kontrollen for å lage skjemaet på nytt ved en tilstandsendring. Dette skyldes at utvidelser endrer størrelsen på den utvidbare kompositten, men endringen trer ikke i kraft før neste gang overordnet defineres (derfor må den tvinges).

Section er en subklasse for den utvidbare kompositten som legger til ytterligere funksjonalitet. Den brukes vanligvis for å partisjonere et skjema til en rekke seksjoner, alle med egne titler og valgfrie beskrivelser. Når stilene Section.TITLE_BAR eller Section.SHORT_TITLE_BAR brukes, forbedres grupperingen ytterligere med dekorasjonen rundt tittelområdet.

I motsetning til ExpandableComposite håndterer Section automatisk omformatering i en endret utvidelsestilstand. Andre interessante bruksområder for varsling om utvidelsestilstand er ved lazy-opprettelse av seksjonsinnhold som forsinkes til seksjonen utvides.