diff options
Diffstat (limited to 'java/java-indexing-impl/src')
2 files changed, 19 insertions, 19 deletions
diff --git a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/ClassImplementationsSearch.java b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/ClassImplementationsSearch.java index a19630dad65c..128cf27ed3c4 100644 --- a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/ClassImplementationsSearch.java +++ b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/ClassImplementationsSearch.java @@ -15,8 +15,6 @@ */ package com.intellij.codeInsight.navigation; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.registry.Registry; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; @@ -24,23 +22,21 @@ import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.search.PsiElementProcessorAdapter; import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ClassInheritorsSearch; +import com.intellij.psi.search.searches.DefinitionsScopedSearch; import com.intellij.util.Processor; import com.intellij.util.QueryExecutor; import org.jetbrains.annotations.NotNull; -public class ClassImplementationsSearch implements QueryExecutor<PsiElement, PsiElement> { - public boolean execute(@NotNull final PsiElement sourceElement, @NotNull final Processor<PsiElement> consumer) { - return !(sourceElement instanceof PsiClass) || processImplementations((PsiClass)sourceElement, consumer); +public class ClassImplementationsSearch implements QueryExecutor<PsiElement, DefinitionsScopedSearch.SearchParameters> { + @Override + public boolean execute(@NotNull DefinitionsScopedSearch.SearchParameters queryParameters, @NotNull Processor<PsiElement> consumer) { + final PsiElement sourceElement = queryParameters.getElement(); + return !(sourceElement instanceof PsiClass) || processImplementations((PsiClass)sourceElement, consumer, queryParameters.getScope()); } - public static boolean processImplementations(final PsiClass psiClass, final Processor<? super PsiClass> processor) { + public static boolean processImplementations(final PsiClass psiClass, final Processor<? super PsiClass> processor, SearchScope scope) { final boolean showInterfaces = Registry.is("ide.goto.implementation.show.interfaces"); - return ClassInheritorsSearch.search(psiClass, ApplicationManager.getApplication().runReadAction(new Computable<SearchScope>() { - @Override - public SearchScope compute() { - return psiClass.getUseScope(); - } - }), true).forEach(new PsiElementProcessorAdapter<PsiClass>(new PsiElementProcessor<PsiClass>() { + return ClassInheritorsSearch.search(psiClass, scope, true).forEach(new PsiElementProcessorAdapter<PsiClass>(new PsiElementProcessor<PsiClass>() { public boolean execute(@NotNull PsiClass element) { if (!showInterfaces && element.isInterface()) { return true; diff --git a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java index dfe436afade2..fd73976f86c5 100644 --- a/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java +++ b/java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java @@ -17,6 +17,8 @@ package com.intellij.codeInsight.navigation; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; +import com.intellij.psi.search.SearchScope; +import com.intellij.psi.search.searches.DefinitionsScopedSearch; import com.intellij.psi.search.searches.OverridingMethodsSearch; import com.intellij.util.QueryExecutor; import com.intellij.util.Processor; @@ -25,25 +27,27 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -public class MethodImplementationsSearch implements QueryExecutor<PsiElement, PsiElement> { - public boolean execute(@NotNull final PsiElement sourceElement, @NotNull final Processor<PsiElement> consumer) { +public class MethodImplementationsSearch implements QueryExecutor<PsiElement, DefinitionsScopedSearch.SearchParameters> { + @Override + public boolean execute(@NotNull DefinitionsScopedSearch.SearchParameters queryParameters, @NotNull Processor<PsiElement> consumer) { + final PsiElement sourceElement = queryParameters.getElement(); if (sourceElement instanceof PsiMethod) { - PsiMethod[] implementations = getMethodImplementations((PsiMethod)sourceElement); + PsiMethod[] implementations = getMethodImplementations((PsiMethod)sourceElement, queryParameters.getScope()); return ContainerUtil.process(implementations, consumer); } return true; } - public static void getOverridingMethods(PsiMethod method, ArrayList<PsiMethod> list) { - for (PsiMethod psiMethod : OverridingMethodsSearch.search(method)) { + public static void getOverridingMethods(PsiMethod method, ArrayList<PsiMethod> list, SearchScope scope) { + for (PsiMethod psiMethod : OverridingMethodsSearch.search(method, scope, true)) { list.add(psiMethod); } } - public static PsiMethod[] getMethodImplementations(final PsiMethod method) { + public static PsiMethod[] getMethodImplementations(final PsiMethod method, SearchScope scope) { ArrayList<PsiMethod> result = new ArrayList<PsiMethod>(); - getOverridingMethods(method, result); + getOverridingMethods(method, result, scope); return result.toArray(new PsiMethod[result.size()]); } } |