diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java index 30fe9e1a1347..c5e99cd3d8e2 100644 --- a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java +++ b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java @@ -18,10 +18,12 @@ package com.intellij.ide.structureView.impl.java; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.psi.*; import com.intellij.util.containers.ContainerUtil; -import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * @author Konstantin Bulenkov @@ -40,7 +42,7 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase { final PsiClass aClass = getElement(); if (aClass == null) return Collections.emptyList(); - Collection members = new THashSet(); + Collection members = new ArrayList(); ContainerUtil.addAll(members, aClass.getFields()); ContainerUtil.addAll(members, aClass.getMethods()); ContainerUtil.addAll(members, aClass.getInnerClasses()); diff --git a/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java b/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java index ae7e7d4d70a3..5682e662f463 100644 --- a/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java +++ b/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java @@ -171,4 +171,9 @@ public abstract class TextEditorBasedStructureViewModel implements StructureView public NodeProvider[] getNodeProviders() { return NodeProvider.EMPTY_ARRAY; } + + @Override + public boolean isEnabled(NodeProvider provider) { + return false; + } } diff --git a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java index 6e4e9e799b2c..f9456ee794aa 100644 --- a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java @@ -119,4 +119,9 @@ public class TreeModelWrapper implements StructureViewModel, ProvidingTreeModel public StructureViewModel getModel() { return myModel; } + + @Override + public boolean isEnabled(NodeProvider provider) { + return myStructureView.isActionActive(provider.getName()); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java b/platform/lang-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java index 9a8017183eca..52a10bebdbe8 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java @@ -43,8 +43,10 @@ public class TreeElementWrapper extends CachingChildrenTreeNode { if (myTreeModel instanceof ProvidingTreeModel) { final NodeProvider[] providers = ((ProvidingTreeModel)myTreeModel).getNodeProviders(); for (NodeProvider provider : providers) { - for (TreeElement child : provider.provideNodes(getValue())) { - addSubElement(createChildNode(child)); + if (((ProvidingTreeModel)myTreeModel).isEnabled(provider)) { + for (TreeElement child : provider.provideNodes(getValue())) { + addSubElement(createChildNode(child)); + } } } } diff --git a/platform/platform-api/src/com/intellij/ide/util/treeView/smartTree/ProvidingTreeModel.java b/platform/platform-api/src/com/intellij/ide/util/treeView/smartTree/ProvidingTreeModel.java index 00a651ac3c33..a7c982fa67aa 100644 --- a/platform/platform-api/src/com/intellij/ide/util/treeView/smartTree/ProvidingTreeModel.java +++ b/platform/platform-api/src/com/intellij/ide/util/treeView/smartTree/ProvidingTreeModel.java @@ -20,4 +20,5 @@ package com.intellij.ide.util.treeView.smartTree; */ public interface ProvidingTreeModel extends TreeModel { NodeProvider[] getNodeProviders(); + boolean isEnabled(NodeProvider provider); }