From 484ec88e27b7025deb09a9875d1ff3acd35e5fa7 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Sat, 1 Oct 2011 19:14:27 -0700 Subject: [PATCH] Collapse variants of the same include file into a single node. --- .../ui/tests/includebrowser/BasicIncludeBrowserTest.java | 5 ++++- .../cdt/internal/ui/includebrowser/IBContentProvider.java | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java index 6c82b07a5bf..f5174157a6a 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java @@ -16,6 +16,7 @@ import junit.framework.Test; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMManager; @@ -37,6 +38,7 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest { // // source // #include "user.h" // #include + // #include "user.h" public void testSimpleInclusion() throws Exception { TestScannerProvider.sIncludes= new String[] { getProject().getProject().getLocation().toOSString() }; @@ -50,9 +52,10 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest { openIncludeBrowser(source); Tree tree = getIBTree(); - checkTreeNode(tree, 0, "source.cpp"); + TreeItem node = checkTreeNode(tree, 0, "source.cpp"); checkTreeNode(tree, 0, 0, "user.h"); checkTreeNode(tree, 0, 1, "system.h"); + assertEquals(2, node.getItemCount()); // The tree has to be reversed openIncludeBrowser(user, true); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java index 6c92fbf840e..96a8383a060 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java @@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.ui.includebrowser; import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -102,7 +104,7 @@ public class IBContentProvider extends AsyncTreeContentProvider { directiveFile= node.getRepresentedFile(); } if (includes.length > 0) { - ArrayList result= new ArrayList(includes.length); + Set result= new LinkedHashSet(includes.length); for (int i = 0; i < includes.length; i++) { IIndexInclude include = includes[i]; try { @@ -122,7 +124,8 @@ public class IBContentProvider extends AsyncTreeContentProvider { include.getIncludedBy().getTimestamp()); newnode.setIsActiveCode(include.isActive()); newnode.setIsSystemInclude(include.isSystemInclude()); - result.add(newnode); + if (!result.contains(newnode) || newnode.isActiveCode()) + result.add(newnode); } catch (CoreException e) { CUIPlugin.log(e); }