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.