Controles de compuesto expandible y sección

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.