filter dumb-aware node providers

This commit is contained in:
Gregory.Shrago
2017-10-04 22:48:58 +03:00
parent c51241b8d9
commit 0a037a5259
3 changed files with 10 additions and 4 deletions

View File

@@ -24,6 +24,7 @@ import com.intellij.navigation.AnonymousElementProvider;
import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.actionSystem.Shortcut;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.util.PropertyOwner;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.psi.PsiAnonymousClass;
@@ -39,7 +40,8 @@ import java.util.List;
/**
* @author Konstantin Bulenkov
*/
public class JavaAnonymousClassesNodeProvider implements FileStructureNodeProvider<JavaAnonymousClassTreeElement>, PropertyOwner {
public class JavaAnonymousClassesNodeProvider
implements FileStructureNodeProvider<JavaAnonymousClassTreeElement>, PropertyOwner, DumbAware {
public static final String ID = "SHOW_ANONYMOUS";
public static final String JAVA_ANONYMOUS_PROPERTY_NAME = "java.anonymous.provider";

View File

@@ -23,6 +23,7 @@ import com.intellij.ide.util.treeView.smartTree.ActionPresentationData;
import com.intellij.ide.util.treeView.smartTree.TreeElement;
import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.actionSystem.Shortcut;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.util.PropertyOwner;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.psi.PsiElement;
@@ -34,7 +35,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.List;
public class JavaLambdaNodeProvider implements FileStructureNodeProvider<JavaLambdaTreeElement>, PropertyOwner {
public class JavaLambdaNodeProvider
implements FileStructureNodeProvider<JavaLambdaTreeElement>, PropertyOwner, DumbAware {
public static final String ID = "SHOW_LAMBDA";
public static final String JAVA_LAMBDA_PROPERTY_NAME = "java.lambda.provider";

View File

@@ -19,6 +19,7 @@ package com.intellij.ide.util.treeView.smartTree;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
@@ -54,10 +55,11 @@ public class TreeElementWrapper extends CachingChildrenTreeNode<TreeElement> {
addSubElement(createChildNode(child));
}
if (myTreeModel instanceof ProvidingTreeModel) {
final Collection<NodeProvider> providers = ((ProvidingTreeModel)myTreeModel).getNodeProviders();
Collection<NodeProvider> originalProviders = ((ProvidingTreeModel)myTreeModel).getNodeProviders();
Collection<NodeProvider> providers = DumbService.getInstance(myProject).filterByDumbAwareness(originalProviders);
for (NodeProvider provider : providers) {
if (((ProvidingTreeModel)myTreeModel).isEnabled(provider)) {
final Collection<TreeElement> nodes = provider.provideNodes(value);
Collection<TreeElement> nodes = provider.provideNodes(value);
for (TreeElement node : nodes) {
if (node == null) {
LOG.error(provider + " returned null node: " + nodes);