ExpandableComposite
actúa de forma similar al
control Group
con la capacidad de contraer una parte de un control
de conmutación de página:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Expandable Composite title"); String ctext = "Creamos un texto bastante largo para que "+ "podamos utilizarlo como contenido para el compuesto expandible. "+ "El compuesto expandible se utiliza para ocultar o mostrar el texto "+ "utilizando el control de conmutación"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
El control ExpandableComposite
acepta varios estilos que
afectan a su aspecto y comportamiento.
El estilo TREE_NODE
creará el control de conmutación utilizado en
un widget de árbol para expandir y contraer nodos, mientras que
TWISTIE
creará un conmutador de estilo triangular. Si utiliza
EXPANDED
se creará el control en el estilo expandido inicial.
Si se utiliza el estilo COMPACT
, el control informará de la
anchura en el estado contraído lo suficiente para que encaje sólo la línea de
título (es decir, cuando se contrae, será lo más compacto en sentido horizontal
como sea posible).
Finalmente, CLIENT_INDENT
sangrará el cliente para alinearlo con
el título (de lo contrario, el cliente se alineará con el control de
conmutación).
El propio compuesto expandible es responsable de representar el control de conmutación y el título. El control para expandir o contraer se establece como cliente. Observe el requisito de que el cliente sea un hijo directo del compuesto expandible.
El compuesto expandible activa objetos ExpansionEvent
cuando
cambia el estado de expansión.
Es necesario añadir un escuchador de expansión al control para reajustar el
formulario en el cambio de estado.
Esto se debe a que la expansión causa cambios en el tamaño del compuesto
expandible, pero el cambio no entrará en vigor hasta la próxima vez que se
diseñe el padre (por eso es necesario aplicarlo).
Section
es una subclase del compuesto expandible que añade
posibilidades adicionales.
Normalmente se utiliza para particionar un formulario en varias secciones, cada
una de ellas con su propio título y descripción opcional.
Cuando se utilizan los estilos
Section.TITLE_BAR
o Section.SHORT_TITLE_BAR
, la decoración
alrededor del área de título amplía aún más la agrupación.
A diferencia de ExpandableComposite
, Section
maneja automáticamente los reajustes en el cambio de estado de
expansión.
Otros usos interesantes de la notificación de estado de expansión son la
creación desocupada del contenido de Section que se retarda hasta que se
expanda la sección.