check providers enabled

This commit is contained in:
Konstantin Bulenkov
2011-11-08 18:46:34 +01:00
parent f2e0f6e7a9
commit 376967d72a
5 changed files with 20 additions and 5 deletions
@@ -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<PsiClass> {
final PsiClass aClass = getElement();
if (aClass == null) return Collections.emptyList();
Collection<PsiElement> members = new THashSet<PsiElement>();
Collection<PsiElement> members = new ArrayList<PsiElement>();
ContainerUtil.addAll(members, aClass.getFields());
ContainerUtil.addAll(members, aClass.getMethods());
ContainerUtil.addAll(members, aClass.getInnerClasses());
@@ -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;
}
}
@@ -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());
}
}
@@ -43,8 +43,10 @@ public class TreeElementWrapper extends CachingChildrenTreeNode<TreeElement> {
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));
}
}
}
}
@@ -20,4 +20,5 @@ package com.intellij.ide.util.treeView.smartTree;
*/
public interface ProvidingTreeModel extends TreeModel {
NodeProvider[] getNodeProviders();
boolean isEnabled(NodeProvider provider);
}