diff options
author | Pawel Piech | 2011-11-04 21:13:48 +0000 |
---|---|---|
committer | Pawel Piech | 2011-11-04 21:13:48 +0000 |
commit | daec187720d2abcebdda62e9a271c6e226239877 (patch) | |
tree | 0596dab93425a5f7eb05c0feea68c6959d1fa7c3 /org.eclipse.debug.ui | |
parent | dd2b4bb2a2daa84d458ab3975b9157d4771584fb (diff) | |
download | eclipse.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.java | 14 |
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; } |