Como descobrir o tamanho preferido de uma JFace TreeViewer ou árvore SWT?
Pergunta
Estou escrevendo um plugin do Eclipse, que tem um controle de foco que consiste em dois controles, um em cima do outro:
telespectador Um HTML (BrowserInformationControl) para que eu possa facilmente calcular a dica tamanho
A TreeViewer que contém uma árvore.
Eu configurei minha árvore com conteúdo real. No entanto, não consigo encontrar uma maneira de descobrir o tamanho da árvore ou a dica de tamanho para uma vez prestados.
Solução
De acordo com a API de org.eclipse.swt.widgets.Tree , isso deve ser feito com:
public Point computeSize(int wHint,
int hHint,
boolean changed)
O tamanho preferido de um controle é o tamanho que seria melhor ser exibido no.
A dica e altura dica argumentos largura permitir que o chamador pedir uma série de perguntas de controle como "Dada uma largura particular, o quão alto é que a necessidade de controle a ser para mostrar todo o conteúdo?"
Para indicar que o chamador não quiser restringir uma dimensão particular, a SWT.DEFAULT constante é passado para a dica.Se o sinalizador alterado é verdade, isso indica que o conteúdo do receptor mudaram, portanto, qualquer caches que um gerenciador de layout que contém o controle pode ter sido manter necessidade de ser lavada. Quando o controle é redimensionado, a bandeira alterado será falso, então caches gerenciador de layout pode ser retido.
Note que no Windows, o comportamento de computeSize()
foi falho: ver este mensagem e este bug : fixo para eclipse 3.4M1 e para frente.
Exemplo de utilização de computeSize()
em esta mensagem .
O uso de getBound()
poderia ser outra interessante alternativa .