ExpandableComposite
se comporte comme la commande Group
et permet de condenser une partie de page au moyen d'une commande à bascule :
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Expandable Composite title"); String ctext = "Nous allons maintenant créer un texte assez long de"+ "manière à pouvoir l'utiliser comme contenu du composite extensible. "+ "Expandable composite permet de masquer ou d'afficher du texte au moyen de "+ "la commande à bascule"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
La commande ExpandableComposite
accepte plusieurs styles qui modifient son apparence et son comportement. Le style TREE_NODE
créé la commande à bascule utilisée dans un widget d'arborescence pour développer et condenser des noeuds, tandis que le style
TWISTIE
crée une commande à bascule de type triangle. L'utilisation de EXPANDED
crée la commande dans son état de développement initial. Si le style COMPACT
est utilisé, la commande limite la largeur de manière à ce que la forme réduite s'ajuste dans la ligne de titre (lors de la réduction, elle sera aussi compacte horizontalement que possible). Enfin, CLIENT_INDENT
met en retrait le client en vue de l'aligner avec le titre (sinon, le client est aligné avec la commande à bascule).
Expandable composite prend en charge l'affichage de la commande à bascule et du titre. La commande permettant le développement et la réduction est définie comme un client. Notez toutefois que le client doit impérativement être un enfant du composite extensible.
Expandable composite met en application les objets ExpansionEvent
lorsque l'état d'expansion est modifié. L'ajout d'un écouteur d'expansion à la commande est requis en vue de régénérer le formulaire en cas de modification de l'état. En effet, l'expansion entraîne une modification de la taille du composite extensible, changement qui ne prendra effet qu'après la prochaine présentation du parent (c'est pourquoi nous devons la forcer).
Section
est une sous-classe du composite extensible qui permet d'ajouter d'autres fonctions. Elle est généralement utilisée pour partitionner un formulaire en différentes sections, chacune avec son propre titre et sa description facultative. Lorsque le style
Section.TITLE_BAR
ou Section.SHORT_TITLE_BAR
est utilisé, la décoration qui entoure la zone de titre accentue encore davantage le regroupement.
Contrairement à ExpandableComposite
, Section
gère automatiquement les régénérations en cas de modification de l'état d'expansion. Parmi les autres utilisations intéressantes de la notification de l'état d'expansion, on peut citer la création différée du contenu Section après l'expansion de la section.