From 07fd280fc92fecd2676682f71fc2193b6d6a8d1b Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Mon, 10 Mar 2008 14:52:02 +0000 Subject: [PATCH] Fix for 217776: Keep namespaces open in Outline view (follow-up) --- .../ui/editor/AbstractCModelOutlinePage.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java index df5652e255e..490b3b9c6c1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java @@ -95,6 +95,7 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent /* * @see TreeViewer#internalExpandToLevel */ + @Override protected void internalExpandToLevel(Widget node, int level) { if (node instanceof Item) { Item i= (Item) node; @@ -103,17 +104,32 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent if (data instanceof CElementGrouping) { return; } else if (data instanceof ICElement) { - // expand classes and namespaces - final int elementType = ((ICElement) data).getElementType(); - if (elementType != ICElement.C_CLASS - && elementType != ICElement.C_TEMPLATE_CLASS - && elementType != ICElement.C_NAMESPACE) { + if (!shouldExpandElement((ICElement)data)) { return; } } } super.internalExpandToLevel(node, level); } + + private boolean shouldExpandElement(ICElement cElement) { + final ICElement parent= cElement.getParent(); + if (parent == null) { + return false; + } + // expand classes and namespaces + final int elementType= cElement.getElementType(); + final int parentType= parent.getElementType(); + switch (elementType) { + case ICElement.C_CLASS: + case ICElement.C_TEMPLATE_CLASS: + return parentType == ICElement.C_UNIT || parentType == ICElement.C_NAMESPACE; + case ICElement.C_NAMESPACE: + return parentType == ICElement.C_UNIT; + default: + return false; + } + } } protected static class IncludeGroupingAction extends Action { @@ -279,7 +295,7 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent fTreeViewer = new OutlineTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); fTreeViewer.setContentProvider(createContentProvider(fTreeViewer)); fTreeViewer.setLabelProvider(new DecoratingCLabelProvider(new AppearanceAwareLabelProvider(TEXT_FLAGS, IMAGE_FLAGS), true)); - fTreeViewer.setAutoExpandLevel(2); + fTreeViewer.setAutoExpandLevel(3); fTreeViewer.setUseHashlookup(true); fTreeViewer.addSelectionChangedListener(this); return fTreeViewer;