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.