Modifier les colonnes dans un TreeViewer
Bonjour,
J'essaie d'enlever des colonnes pour en remettre d'autres dans un TreeViewer.
Je fais un dispose() sur chacune des colonnes (sur le Tree) que je veux enlever, et je rajoute les nouvelles colonnes avec des TreeColumnViewer.
donc:
Code:
1 2 3
| for (TreeColumn column : viewer.getTree().getColumns()) {
column.dispose();
} |
et ensuite :
Code:
treeviewercolumn = new TreeViewerColumn(viewer, SWT.NONE);
Au refresh, j'ai systématiquement une NullPointerException:
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:135)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:911)
at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:97)
at org.eclipse.jface.util.SafeRunnable$3.run(SafeRunnable.java:154)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:991)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
at org.eclipse.jface.util.SafeRunnable$3.run(SafeRunnable.java:154)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2026)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:806)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:781)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:755)
at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1463)
at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:816)
at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1446)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1368)
at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:390)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1330)
at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1435)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1606)
Le résultat à l'écran montre que les entêtes des colonnes sont OK, mais évidemment tout l'arbre n'est pas affiché...
J'ai cherché un peu partout, mais je n'ai rien trouvé sur le sujet. Quelqu'un aurait une idée pour m'éviter de reconstruire toute la Shell ?
Merci.
Eclipse 3.3.1
Java 5
Windows XP
Pourquoi supprimer des TreeColumn
Oui, je voudrais faire varier les colonnes (en particulier le nombre) en fonction de mon modèle, de façon dynamique. En changeant de modèle (un setInput() différent), je voudrais que la table s'adapte, du coup je dois supprimer certaines colonnes et en remettre d'autres.