Pola sterujące rozwijanego elementu złożonego i sekcji

Pole sterujące ExpandableComposite działa podobnie do pola sterującego Group, z tym że umożliwia zwijanie i rozwijanie fragmentu strony:

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Tytuł rozwijanego elementu złożonego");
	String ctext = "Długi tekst, który posłuży jako "+
	"treść rozwijanego elementu złożonego. "+
	"Rozwijany element złożony umożliwia ukrywanie i wyświetlanie tekstu "+
	"przez przełączanie.";
	Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
	ec.setClient(client);
	ec.addExpansionListener(new ExpansionAdapter() {
		public void expansionStateChanged(ExpansionEvent e) {
			form.reflow(true);
		}
	});

Pole sterujące ExpandableComposite akceptuje wiele stylów określających jego wygląd i zachowanie. Styl TREE_NODE tworzy pole sterujące przełącznika używane w widgecie drzewa do rozwijania i zwijania węzłów, a styl TWISTIE tworzy trójkątny przełącznik. Użycie stylu EXPANDED powoduje utworzenie pola sterującego, które w początkowym stanie będzie rozwinięte. Jeśli zostanie użyty styl COMPACT, pole sterujące zgłosi szerokość w stanie zwinięcia niezbędną do pomieszczenia tylko wiersza tytułu (zwinięte pole sterujące będzie miało możliwie najmniejszą szerokość). Zastosowanie stylu CLIENT_INDENT powoduje utworzenie wcięcia wyrównującego klienta z tytułem (w przeciwnym razie klient zostanie wyrównany do pola sterującego przełącznika).

Za wyświetlanie przełącznika i tytułu jest odpowiedzialny rozwijany element złożony. Pole sterujące rozwijaniem i zwijaniem jest ustawiane jako klient. Klient musi być bezpośrednim elementem potomnym rozwijanego elementu złożonego.

Zmiana stanu rozwinięcia powoduje wyzwolenie obiektów ExpansionEvent przez rozwijany element złożony. Aby odświeżyć formularz w przypadku zmiany stanu rozwinięcia, do pola sterującego należy dodać funkcję nasłuchiwania rozwijania. Jest to niezbędne, ponieważ rozwinięcie powoduje zmianę wielkości rozwijanego elementu złożonego, a ta zmiana nie jest wprowadzana do chwili kolejnego renderowania elementu nadrzędnego (dlatego należy wymusić to renderowanie).

Klasa Section jest podklasą rozwijanego elementu złożonego udostępniającą dodatkowe możliwości. Najczęściej stosuje się ją w celu podzielenia formularza na sekcje, z których każda ma swój tytuł i opcjonalny opis. Użycie stylu Section.TITLE_BAR lub Section.SHORT_TITLE_BAR powoduje dodanie dekoracji do obszaru tytułu, co dodatkowo wyróżnia grupy.

W odróżnieniu od klasy ExpandableComposite klasa Section obsługuje automatyczne odświeżanie w przypadku zmiany stanu rozwinięcia. Powiadomień o stanie rozwinięcia można również użyć do opóźnionego tworzenia treści sekcji, która jest wyświetlana dopiero po rozwinięciu sekcji.