ExpandableComposite
fungerer på samme måde som kontrollen Group
og har evnen til at skjule en del af en side vha. en aktiverings/deaktiveringsfunktion:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Expandable Composite title"); String ctext = "Nu opretter vi en temmelig lang tekst, så "+ "vi kan bruge den som indhold til det sammensatte element, der kan udvides."+ "ExpandableComposite bruges til at vise eller skjule teksten vha. "+ "aktiverings/deaktiveringsfunktionen"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
Kontrollen ExpandableComposite
accepterer et antal typer, der påvirker dens udseende og funktionsmåde.
Typen TREE_NODE
opretter den aktiverings/deaktiveringsfunktion, der bruges i et træstruktur-element til at vise og skjule noder, mens TWISTIE
opretter en funktion, der skifter mellem tre tilstande. Hvis du bruger EXPANDED
, oprettes kontrollen i den oprindelige udvidede tilstand.
Hvis stilen COMPACT
bruges, rapporterer kontrollen bredden på den skjulte tilstand, så den passer udelukkende til titellinjen (dvs. at når den skjules, vil den være så kompakt som muligt på den horisontale led).
Endelig medfører CLIENT_INDENT
, at klienten tilpasse til titlen (ellers justeres klienten i forhold til aktiverings/deaktiveringsfunktionen).
ExpandableComposite er i sig selv ansvarlig for at gengive aktiverings/deaktiveringsfunktionen og titlen. Den kontrol, der skal vises eller skjules, angives som klient. Bemærk, at klienten skal være et direkte underordnet element til det sammensatte element, der kan udvides.
ExpandableComposite starter ExpansionEvent
-objekter, når udvidelsestilstanden ændres.
Det er påkrævet at tilføje en udvidelseslytter til kontrollen for at kunne justere formularer efter en tilstandsændring.
Det skyldes, at udvidelse medfører ændringer af størrelsen på det sammensatte element, der kan udvides, men ændringen aktiveres først, næste gang der udføres layout af det overordnede element (derfor må vi tvinge det).
Section
er en underklasse til det sammensatte element, der kan udvides, og indeholder yderligere funktionsmuligheder.
Det bruges typisk til at opdele en formular i et antal afsnit, som hvert har deres egen titel og en valgfri beskrivelse.
Når typerne Section.TITLE_BAR
eller Section.SHORT_TITLE_BAR
bruges, øger dekoreringen omkring titelområdet yderligere grupperingen.
I modsætning til ExpandableComposite
håndterer Section
automatisk nye justeringer efter ændring af udvidelsestilstanden.
Andre interessante anvendelser af beskeden om udvidelsestilstande er lazy-oprettelse af 'Section'-indholdet, som derved forsinkes, indtil afsnittet udvides.