Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawel Piech2011-11-04 21:13:48 +0000
committerPawel Piech2011-11-04 21:13:48 +0000
commitdaec187720d2abcebdda62e9a271c6e226239877 (patch)
tree0596dab93425a5f7eb05c0feea68c6959d1fa7c3 /org.eclipse.debug.ui
parentdd2b4bb2a2daa84d458ab3975b9157d4771584fb (diff)
downloadeclipse.platform.debug-daec187720d2abcebdda62e9a271c6e226239877.tar.gz
eclipse.platform.debug-daec187720d2abcebdda62e9a271c6e226239877.tar.xz
eclipse.platform.debug-daec187720d2abcebdda62e9a271c6e226239877.zip
Bug 360015 - [flex-hierarchy] NPE when column presentation changes its
supported list of column IDs
Diffstat (limited to 'org.eclipse.debug.ui')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java
index 9d84f46c7..abf6958b8 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java
@@ -1424,6 +1424,7 @@ public class InternalTreeModelViewer extends TreeViewer
for (int i = 0; i < visibleColumnIds.length; i++) {
String id = visibleColumnIds[i];
String header = presentation.getHeader(id);
+ if (header == null) header = id;
// TODO: allow client to specify style
TreeColumn column = new TreeColumn(tree, SWT.LEFT, i);
column.setMoveable(true);
@@ -1519,6 +1520,19 @@ public class InternalTreeModelViewer extends TreeViewer
String[] columns = (String[]) fVisibleColumns.get(presentation.getId());
if (columns == null) {
return presentation.getInitialColumns();
+ } else {
+ String[] available = presentation.getAvailableColumns();
+ outer: for (int i = 0; i < columns.length; i++) {
+ for (int j = 0; j < available.length; j++) {
+ if (columns[i].equals(available[j])) continue outer;
+ }
+ // We found a column ID which is not in current list of available column IDs.
+ // Clear out saved column data for given column presentation.
+ fVisibleColumns.remove(presentation.getId());
+ fColumnOrder.remove(presentation.getId());
+ fColumnSizes.remove(presentation.getId());
+ return presentation.getInitialColumns();
+ }
}
return columns;
}

Back to the top