ExpandableComposite
pracuje podobně jako obslužný prvek Group
a má schopnost sbalení části stránky obslužným přepínačem:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Název rozšiřitelného kompozitního prvku"); String ctext = "Nyní vytvoříme delší text, abychom "+ "jej mohli použít jako obsah rozšiřitelného kompozitního prvku. "+ "Rozšiřitelný kompozitní prvek se používá k zobrazení nebo skrytí textu pomocí "+ "obslužného přepínače"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
Obslužný prvek ExpandableComposite
akceptuje řadu stylů, které ovlivňují jeho vzhled a chování. Styl TREE_NODE
vytvoří obslužný přepínač použitím ve stromovém prvku widget k rozbalování a sbalování uzlů, zatímco TWISTIE
vytvoří trojúhelníkový přepínač. Při použití EXPANDED
dojde k vytvoření obslužného prvku ve výchozím rozbaleném stavu. Při použití stylu COMPACT
obslužný prvek poskytne šířku sbaleného stavu, která postačí pouze k umístění do titulního řádku (tj. je-li sbalený, bude ve vodorovném směru co nejmenší). Poslední styl CLIENT_INDENT
provede odsazení klienta za účelem zarovnání podle titulku (v opačném případě bude klient zarovnán obslužným přepínačem).
Samotný rozšiřitelný kompozitní prvek odpovídá za vykreslení obslužného přepínače a názvu. Obslužný prvek, který má být rozbalen nebo sbalen, je nastaven jako klient. Povšimněte si požadavku, že klient musí být přímým podřízeným prvkem rozšiřitelného kompozitního prvku.
Rozšiřitelný kompozitní prvek spouští objekty ExpansionEvent
při změně stavu rozbalení. Do obslužného prvku je zapotřebí přidat listener rozbalení za účelem obnovení stavu změny formuláře. Toto je zapotřebí, protože rozbalení způsobuje změny velikosti rozšiřitelného kompozitního prvku, avšak změna se neuplatňuje až do příštího vykreslení nadřazeného prvku (proto je musíme vynutit).
Section
je podtřídou rozšiřitelného kompozitního prvku, která přidává přídavné schopnosti. V běžném případě se používá k segmentaci formuláře na určitý počet úseků se samostatnými titulky a volitelnými popisy. Při použití stylu Section.TITLE_BAR
nebo Section.SHORT_TITLE_BAR
seskupování ještě více zdůrazní obruba oblasti titulku.
Na rozdíl od ExpandableComposite
prvek Section
automaticky obsluhuje obnovení změny stavu rozbalení. Dalším zajímavým využitím upozornění na stav rozbalení je pomalé vytváření obsahu sekce, jež je odloženo až do momentu rozbalení sekce.