Steuerelemente 'Expandable composite' und 'Section'

ExpandableComposite hat eine ähnliche Funktion wie das Steuerelement Group. Es bietet die Möglichkeit, einen Teil einer Seite über eine Umschaltsteuerung auszublenden:

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Expandable Composite title");
	String ctext = "Wir erstellen nun einen etwas längeren Text, den wir "+
	"als Inhalt für das erweiterbare Verbundobjekt verwenden können. "+
	"'Expandable composite' wird verwendet, um Text anhand der Umschaltsteuerung "+
	"auszublenden oder anzuzeigen";
	Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
	ec.setClient(client);
	ec.addExpansionListener(new ExpansionAdapter() {
		public void expansionStateChanged(ExpansionEvent e) {
			form.reflow(true);
		}
	});

Das Steuerelement ExpandableComposite akzeptiert mehrere Darstellungsstile, die sein Aussehen und Verhalten beeinflussen. Der Stil TREE_NODE erstellt die Umschaltsteuerung in einem baumförmigen Fensterobjekt zur Erweiterung und Ausblendung von Knoten, während TWISTIE eine dreieckige Steuerung erstellt. Über EXPANDED wird das Steuerelement im ursprünglichen erweiterten Zustand erstellt. Wird der Stil COMPACT verwendet, wird die Steuerung im ausgeblendeten Zustand auf eine Breite reduziert, so dass sie gerade unter die Titelzeile passt (d.h. im ausgeblendeten Zustand ist sie horizontal so kompakt wie möglich). CLIENT_INDENT schließlich rückt den Client ein, um ihn nach dem Titel auszurichten (ansonsten wird der Client nach der Umschaltsteuerung ausgerichtet).

'Expandable composite' selbst ist für die Wiedergabe der Umschaltsteuerung und des Titel zuständig. Das Steuerelement zur Erweiterung oder zum Ausblenden wird als Client eingestellt. Beachten Sie die Voraussetzung, dass der Client ein direktes untergeordnetes Element des erweiterbaren Verbundobjekts ist.

'Expandable composite' startet Objekte des Typs ExpansionEvent, wenn der Erweiterungszustand geändert wird. Eine Erweiterungs-Listener-Funktion muss zum Steuerelement hinzugefügt werden, um das Formular nach Änderung des Zustands neu auszurichten. Dies liegt daran, dass eine Erweiterung Änderungen an der Größe des erweiterbaren Verbundobjekts auslöst. Die Änderung tritt allerdings erst in Kraft, wenn das übergeordnete Element das nächste mal angeordnet wird (daher muss es erzwungen werden).

Section ist eine Unterklasse von 'Expandable composite', die zusätzliche Funktionalität hinzufügt. Es wird normalerweise verwendet, um ein Formular in mehrere Abschnitte zu partitionieren, die jeweils über eigene Titel und optionale Beschreibung verfügen. Wenn die Stile Section.TITLE_BAR oder Section.SHORT_TITLE_BAR verwendet werden, verbessert eine Dekoration um den Titelbereich herum die Gruppierung.

Im Gegensatz zu ExpandableComposite übernimmt Section die Neuanordnung, nachdem sich ein Erweiterungsstatus geändert hat, automatisch. Ein anderer interessanter Einsatzbereich für die Erweiterungszustandsbenachrichtigung ist die Erstellung des 'Section'-Inhalts bei Bedarf, der bis zu dem Zeitpunkt an dem der Abschnitt erweitert wird, verzögert wird.