Bonjour à tous,
j'ai un petit problème lors de l'affichage d'un ProgressBar dans mon TreeViewer: cela crée un espace blanc derrière. J'utilise ce snippet : http://dev.eclipse.org/viewcvs/viewv...va?view=markup
J'obtiens ce résultat:
Ce qui me dérange, c'est le blanc derrière lorsque la rangé est sélectionnée. Les rangés où il n'y a pas de progress bar sont correctes.
Code où j'inclus l'information pour mes colonnes:
Code où je construis mes colonnes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 columnDataList[1] = new ColumnData("Progress", 175, SWT.LEFT, "Progress of the scnenarios", new CellLabelProvider() { public void update(ViewerCell cell) { if(progressBar){ if(cell.getElement() instanceof ScenarioNode && ((ScenarioNode)cell.getElement()).getParent() instanceof ScenarioNode && ((ScenarioNode)cell.getElement()).getProgressBar() == null){ final TreeItem item = (TreeItem) cell.getItem(); DisposeListener listener = new DisposeListener() { public void widgetDisposed(DisposeEvent e) { if( item.getData("EDITOR") != null ) { TreeEditor editor = (TreeEditor) item.getData("EDITOR"); editor.getEditor().dispose(); editor.dispose(); } } }; if (item.getData("EDITOR") != null) { TreeEditor editor = (TreeEditor) item.getData("EDITOR"); editor.getEditor().dispose(); editor.dispose(); } if( item.getData("DISPOSELISTNER") != null ) { item.removeDisposeListener((DisposeListener) item.getData("DISPOSELISTNER")); } TreeEditor editor = new TreeEditor(item.getParent()); item.setData("EDITOR", editor); Composite comp = new Composite(item.getParent(), SWT.NONE); comp.setBackground(item.getParent().getBackground()); comp.setBackgroundMode(SWT.INHERIT_DEFAULT); RowLayout l = new RowLayout(); l.marginHeight = 0; l.marginWidth = 0; l.marginTop = 0; l.marginBottom = 0; comp.setLayout(l); final ProgressBar progressBar = new ProgressBar(comp, SWT.HORIZONTAL); progressBar.setMinimum(0); progressBar.setMaximum(((((ScenarioNode) ((ScenarioNode)cell.getElement()).getParent()).getTotalNbEvents()))); progressBar.setSelection((int) (((ScenarioNode) cell.getElement()).getNbEvents())); ((ScenarioNode) cell.getElement()).setProgressBar(progressBar); editor.grabHorizontal = true; editor.setEditor(comp, item, 1); item.addDisposeListener(listener); item.setData("DISPOSELISTNER",listener); } else if(cell.getElement() instanceof ScenarioNode && ((ScenarioNode)cell.getElement()).getParent() instanceof ScenarioNode && ((ScenarioNode)cell.getElement()).getProgressBar() != null){ ((ScenarioNode) cell.getElement()).getProgressBar().setSelection(((ScenarioNode) cell.getElement()).filtersCounter); } else { cell.setText(""); } } } } ,null, null);
Si vous avez des idées, si petites soit-elle, n'hésitez pas! Ce sera très apprécié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 for (final ColumnData columnData : columnDataList) { final TreeViewerColumn treeColumn = new TreeViewerColumn( viewer, columnData.alignment); treeColumn.getColumn().setText(columnData.header); treeColumn.getColumn().setWidth(columnData.width); treeColumn.getColumn().setToolTipText(columnData.tooltip); if (columnData.comparator != null) { treeColumn.getColumn().addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (viewer.getTree().getSortDirection() == SWT.UP || viewer.getTree().getSortColumn() != treeColumn.getColumn()) { viewer.setComparator(columnData.comparator); viewer.getTree().setSortDirection(SWT.DOWN); } else { viewer.setComparator(new ViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { return -1 * columnData.comparator.compare(viewer, e1, e2); } }); viewer.getTree().setSortDirection(SWT.UP); } viewer.getTree().setSortColumn( treeColumn.getColumn()); } }); } if(columnData.labelProvider == null) treeColumn.setLabelProvider(columnData.cellProvider); else if (columnData.cellProvider == null) treeColumn.setLabelProvider(columnData.labelProvider); }
Partager