From 0a037a52598206fc5aaf792a38ec47f903bef6e2 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 4 Oct 2017 22:48:58 +0300 Subject: [PATCH] filter dumb-aware node providers --- .../impl/java/JavaAnonymousClassesNodeProvider.java | 4 +++- .../ide/structureView/impl/java/JavaLambdaNodeProvider.java | 4 +++- .../ide/util/treeView/smartTree/TreeElementWrapper.java | 6 ++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaAnonymousClassesNodeProvider.java b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaAnonymousClassesNodeProvider.java index 1ce81d5ad725..f743744151aa 100644 --- a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaAnonymousClassesNodeProvider.java +++ b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaAnonymousClassesNodeProvider.java @@ -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, PropertyOwner { +public class JavaAnonymousClassesNodeProvider + implements FileStructureNodeProvider, PropertyOwner, DumbAware { public static final String ID = "SHOW_ANONYMOUS"; public static final String JAVA_ANONYMOUS_PROPERTY_NAME = "java.anonymous.provider"; diff --git a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaLambdaNodeProvider.java b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaLambdaNodeProvider.java index 9dbf9115adb7..a888d176dd08 100644 --- a/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaLambdaNodeProvider.java +++ b/java/java-structure-view/src/com/intellij/ide/structureView/impl/java/JavaLambdaNodeProvider.java @@ -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, PropertyOwner { +public class JavaLambdaNodeProvider + implements FileStructureNodeProvider, PropertyOwner, DumbAware { public static final String ID = "SHOW_LAMBDA"; public static final String JAVA_LAMBDA_PROPERTY_NAME = "java.lambda.provider"; diff --git a/platform/structure-view-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java b/platform/structure-view-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java index ac1660aea6a0..6638e54c2611 100644 --- a/platform/structure-view-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java +++ b/platform/structure-view-impl/src/com/intellij/ide/util/treeView/smartTree/TreeElementWrapper.java @@ -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 { addSubElement(createChildNode(child)); } if (myTreeModel instanceof ProvidingTreeModel) { - final Collection providers = ((ProvidingTreeModel)myTreeModel).getNodeProviders(); + Collection originalProviders = ((ProvidingTreeModel)myTreeModel).getNodeProviders(); + Collection providers = DumbService.getInstance(myProject).filterByDumbAwareness(originalProviders); for (NodeProvider provider : providers) { if (((ProvidingTreeModel)myTreeModel).isEnabled(provider)) { - final Collection nodes = provider.provideNodes(value); + Collection nodes = provider.provideNodes(value); for (TreeElement node : nodes) { if (node == null) { LOG.error(provider + " returned null node: " + nodes);