diff --git a/java/java-impl/src/com/intellij/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java b/java/java-impl/src/com/intellij/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java index 7fe18e96d315..bf19262383bb 100644 --- a/java/java-impl/src/com/intellij/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java +++ b/java/java-impl/src/com/intellij/ide/util/scopeChooser/ClassHierarchyScopeDescriptor.java @@ -25,10 +25,12 @@ import com.intellij.ide.IdeBundle; import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeClassChooserFactory; import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFunctionalExpression; +import com.intellij.psi.PsiFile; import com.intellij.psi.presentation.java.ClassPresentationUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.LocalSearchScope; @@ -37,7 +39,6 @@ import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.search.searches.FunctionalExpressionSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtilCore; -import com.intellij.util.Processor; import org.jetbrains.annotations.Nullable; import java.util.LinkedList; @@ -51,7 +52,17 @@ public class ClassHierarchyScopeDescriptor extends ScopeDescriptor { public ClassHierarchyScopeDescriptor(final Project project) { super(null); myProject = project; - myRootClass = PsiTreeUtil.getParentOfType(CommonDataKeys.PSI_ELEMENT.getData(DataManager.getInstance().getDataContext()), PsiClass.class, false); + DataContext dataContext = DataManager.getInstance().getDataContext(); + PsiElement element; + Editor editor = CommonDataKeys.EDITOR.getData(dataContext); + if (editor != null) { + PsiFile file = CommonDataKeys.PSI_FILE.getData(dataContext); + element = file != null ? file.findElementAt(editor.getCaretModel().getOffset()) : null; + } + else { + element = CommonDataKeys.PSI_ELEMENT.getData(dataContext); + } + myRootClass = PsiTreeUtil.getParentOfType(element, PsiClass.class, false); } public String getDisplay() {