summaryrefslogtreecommitdiff
path: root/java/java-indexing-impl/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-indexing-impl/src')
-rw-r--r--java/java-indexing-impl/src/com/intellij/codeInsight/navigation/ClassImplementationsSearch.java20
-rw-r--r--java/java-indexing-impl/src/com/intellij/codeInsight/navigation/MethodImplementationsSearch.java18
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()]);
}
}