ExpandableComposite
ha un funzionamento simile al controllo Group
con la
possibilità di comprimere una parte di una pagina con un controllo di attivazione/disattivazione:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Expandable Composite title"); String ctext = "We will now create a somewhat long text so that "+ "we can use it as content for the expandable composite. "+ "Expandable composite is used to hide or show the text using the "+ "toggle control"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
Il controllo ExpandableComposite
accetta numerosi stili che ne determinano l'aspetto e il
comportamento. Lo stile TREE_NODE
crea il controllo di attivazione/disattivazione utilizzato
in un widget ad albero per espandere e comprimere i nodi, mentre
TWISTIE
crea un'attivazione con stile triangolare. Utilizzando EXPANDED
viene creato il controllo con lo stato iniziale espanso. Se si utilizza lo stile COMPACT
, il
controllo presenta una larghezza nello stato compresso sufficiente solo a rientrare nella riga del titolo
(se compresso, è ristretto al massimo in orizzontale). Infine, CLIENT_INDENT
fa rientrare il
client per allinearlo al titolo (altrimenti, il client viene allineato al controllo di attivazione/disattivazione).
ExpandableComposite è responsabile del rendering del controllo di attivazione/disattivazione e del titolo. Il controllo per espandere e comprimere è impostato come client. Notare che come prerequisito il client deve essere un elemento secondario diretto di ExpandableComposite.
ExpandableComposite attiva gli oggetti ExpansionEvent
quando si modifica lo stato di
espansione. L'aggiunta di un listener di espansione è richiesta per poter ridisegnare il modulo alla
modifica di stato. L'espansione provoca modifiche nella dimensione di ExpandableComposite, ma la modifica non
ha effetto fino a quando l'elemento principale non viene tracciato la prossima volta (pertanto, è
necessario forzare la modifica).
Section
è una sottoclasse di ExpandableComposite che aggiunge ulteriori funzioni. Generalmente
viene utilizzato per suddividere un modulo in più sezioni, ognuna con il proprio titolo e una descrizione
facoltativa. Quando si utilizzano gli stili Section.TITLE_BAR
o
Section.SHORT_TITLE_BAR
, una decorazione intorno all'area del titolo migliora ulteriormente il
raggruppamento.
A differenza di ExpandableComposite
, Section
gestisce
automaticamente il ridisegno alla modifica dello stato di espansione. Altri usi interessanti della notifica
dello stato di espansione sono la creazione lenta del contenuto di sezione, che viene ritardato fino a
quando si espande la sezione.