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 : 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);
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
		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);
		}
Si vous avez des idées, si petites soit-elle, n'hésitez pas! Ce sera très apprécié.