colonne "span" dans un tree/treeviewer
Bonjour,
je voudrais avoir un item dans un CheckboxTreeViewer qui s'affiche sur toute la largeur, pour simuler une table avec groupement.
Ca marche bien (pour l'instant j'ai testé que sur Windows) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Listener paintListener = new Listener() {
public void handleEvent(Event event) {
TreeItem item = ((TreeItem)event.item);
Object element = item.getData();
if ( element instanceof BundleHandler ) {
//event.doit=false;
switch(event.type) {
case SWT.PaintItem: {
String text = ((BundleHandler)element).getLabel();
if ( text!=null ) {
Point size = event.gc.stringExtent(text);
int yOffset = Math.max(0, (event.height - size.y) / 2);
event.gc.drawString(text, item.getBounds(0).x + item.getBounds(event.index).x-event.x+2 , event.y + yOffset, true);
}
break;
}
}
}
}
};
treeViewer.getTree().addListener(SWT.PaintItem, paintListener); |
Par contre le +2 que j'ai dû mettre "en dur" me gène : je suppose qu'il s'agit de trims , genre marge, mais je n'arrive pas à trouver un moyen d'en calculer une valeur générique qui s'adapte donc à l'environnement. Je ne vois pas d'où viennent ces 2 pixels de décalage.
Quelqu'un a une idée de ce à quoi cet offset correspond ?
Ou voit-il à un moyen de le déterminer de manière à ce que cela fonctionne sur tous les os et avec toutes les tailles de polices ?