Compostos Expansíveis e Controles de Seção

ExpandableComposite atual de maneira semelhante ao controle Group com a habilidade de reduzir uma parte de uma página com um controle toggle:

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(),
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Expandable Composite title");
	String ctext = "Agora criamos um texto um pouco longo para que"+
	"possamos usá-lo como conteúdo para o composto expansível. "+
	"O composto expansível é usado para ocultar ou mostra o texto usando o"+
	"controle toggle";
	Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
	ec.setClient(client);
	ec.addExpansionListener(new ExpansionAdapter() {
		public void expansionStateChanged(ExpansionEvent e) {
			form.reflow(true);
		}
	});

O controle ExpandableComposite aceita vários estilos que afetam sua aparência e comportamento. O estilo TREE_NODE criará o controle toggle utilizado em um widget em árvore para expandir e reduzir nós, enquanto o TWISTIE criará um toggle em estilo triângulo. A utilização de EXPANDED criará o controle no estado expandido inicial. Se o estilo COMPACT for utilizado, o controle relatará a largura no estado reduzido o suficiente para ajustar-se na linha do título apenas (ou seja, quando reduzido, ele será o mais compacto quanto possível horizontalmente). Finalmente, o CLIENT_INDENT recuará o cliente para alinhar com o título (caso contrário, o cliente será alinhado com o controle toggle).

O próprio composto expansível é responsável por renderizar o controle toggle e o título. O controle para expandir ou reduzir é configurado como um cliente. Observe o requisito de que o cliente seja um filho direto do composto expansível.

O composto expansível dispara os objetos ExpansionEvent quando o estado da expansão é alterado. A inclusão de um listener de expansão ao controle é necessário para fazer o formulário fluir novamente na alteração do estado. Isso é porque a expansão provoca alterações no tamanho do composto expansível, mas a alteração não terá efeito até a próxima vez que o pai for disposto (portanto, precisamos forçá-lo).

Section é uma subclasse do composto expansível que inclui recursos adicionais. Tipicamente, ela é utilizada para particionar um formulário em várias seções, cada uma com seu próprio título e descrição opcional. Quando os estilos Section.TITLE_BAR ou Section.SHORT_TITLE_BAR são utilizados, a decoração em torno da área do título melhora ainda mais o agrupamento.

Ao contrário de ExpandableComposite, o Section manipula refluxos automaticamente na alteração do estado da expansão. Outros usos interessantes da notificação do estado da expansão são a criação lenta do conteúdo da Seção que é atrasada até que a seção seja expandida.