ExpandableComposite
fungerar ungefär på samma sätt som kontrollen Group
med förmågan att komprimera en del av en sida, en växelkontroll:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Titel på expanderbar komposit"); String ctext = "Vi kommer nu att skapa en ganska lång text så att "+ "vi kan använda den som innehåll för den expanderbara kompositen. "+ "Expanderbar komposit används för att dölja eller visa texten med hjälp av "+ "växelkontrollen"; 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
accepterar ett antal utföranden som påverkar dess utseende och beteende. Utförandet TREE_NODE
skapar den växelkontroll som används i en trädgränssnittskontroll för att expandera och komprimera noder, medan TWISTIE
skapar en triangelliknande växelfunktion. Med hjälp av EXPANDED
skapas kontrollen i det expanderade initialläget. Om utförandet COMPACT
används, anpassas kontrollens rapporter i komprimerat läge till enbart titelraden (dvs. den komprimeras så mycket som möjligt horisontellt). CLIENT_INDENT
drar in klienten för justering av titeln (annars justeras klienten via växelkontrollen).
Själva den expanderbara kompositen återger växelkontrollen och titeln. Kontrollen för expandering eller komprimering ställs in som en klient. Observera kravet att klienten är direkt underordnad den expanderbara kompositen.
Expanderbart komposit aktiverar ExpansionEvent
-objekt när expanderingsläget ändras. En expanderingslyssnare måste läggas till i kontrollen för att formuläret ska uppdateras vid lägesändring. Det beror på att expandering orsakar ändringar i den expanderbara kompositens storlek, men ändringen träder inte i kraft förrän nästa gång överordnade läggs ut (vi måste sålunda tvinga den).
Sektion
är en subklass hos den expanderbara kompositen som lägger till extra funktioner. Den används normalt för att dela in ett formulär i ett antal sektioner, vardera med egen titel och tilläggsbeskrivning. När utförandena Section.TITLE_BAR
eller Section.SHORT_TITLE_BAR
används, förbättras grupperingen ytterligare med dekoration runt titelområdet.
Till skillnad från ExpandableComposite
hanteras uppdatering vid expanderingslägesändring automatiskt i Section
. Andra intressanta användningsområden av avisering av expanderingsläget är lat skapande av sektionsinnehåll som fördröjs tills sektionen expanderas.