Sammensatte og afsnits-kontroller, som kan udvides

ExpandableComposite fungerer på samme måde som kontrollen Group og har evnen til at skjule en del af en side vha. en aktiverings/deaktiveringsfunktion:

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Expandable Composite title");
	String ctext = "Nu opretter vi en temmelig lang tekst, så "+
	"vi kan bruge den som indhold til det sammensatte element, der kan udvides."+
	"ExpandableComposite bruges til at vise eller skjule teksten vha. "+
	"aktiverings/deaktiveringsfunktionen";
	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 accepterer et antal typer, der påvirker dens udseende og funktionsmåde. Typen TREE_NODE opretter den aktiverings/deaktiveringsfunktion, der bruges i et træstruktur-element til at vise og skjule noder, mens TWISTIE opretter en funktion, der skifter mellem tre tilstande. Hvis du bruger EXPANDED, oprettes kontrollen i den oprindelige udvidede tilstand. Hvis stilen COMPACT bruges, rapporterer kontrollen bredden på den skjulte tilstand, så den passer udelukkende til titellinjen (dvs. at når den skjules, vil den være så kompakt som muligt på den horisontale led). Endelig medfører CLIENT_INDENT, at klienten tilpasse til titlen (ellers justeres klienten i forhold til aktiverings/deaktiveringsfunktionen).

ExpandableComposite er i sig selv ansvarlig for at gengive aktiverings/deaktiveringsfunktionen og titlen. Den kontrol, der skal vises eller skjules, angives som klient. Bemærk, at klienten skal være et direkte underordnet element til det sammensatte element, der kan udvides.

ExpandableComposite starter ExpansionEvent-objekter, når udvidelsestilstanden ændres. Det er påkrævet at tilføje en udvidelseslytter til kontrollen for at kunne justere formularer efter en tilstandsændring. Det skyldes, at udvidelse medfører ændringer af størrelsen på det sammensatte element, der kan udvides, men ændringen aktiveres først, næste gang der udføres layout af det overordnede element (derfor må vi tvinge det).

Section er en underklasse til det sammensatte element, der kan udvides, og indeholder yderligere funktionsmuligheder. Det bruges typisk til at opdele en formular i et antal afsnit, som hvert har deres egen titel og en valgfri beskrivelse. Når typerne Section.TITLE_BAR eller Section.SHORT_TITLE_BAR bruges, øger dekoreringen omkring titelområdet yderligere grupperingen.

I modsætning til ExpandableComposite håndterer Section automatisk nye justeringer efter ændring af udvidelsestilstanden. Andre interessante anvendelser af beskeden om udvidelsestilstande er lazy-oprettelse af 'Section'-indholdet, som derved forsinkes, indtil afsnittet udvides.