mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
debug logging for IDEA-120339 Type Hierarchy works only when the cursor is over a class name
This commit is contained in:
@@ -21,8 +21,7 @@ import com.intellij.ide.hierarchy.HierarchyProvider;
|
||||
import com.intellij.ide.hierarchy.TypeHierarchyBrowserBase;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
@@ -32,11 +31,15 @@ import org.jetbrains.annotations.NotNull;
|
||||
* @author yole
|
||||
*/
|
||||
public class JavaTypeHierarchyProvider implements HierarchyProvider {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.hierarchy.type.JavaTypeHierarchyProvider");
|
||||
public PsiElement getTarget(@NotNull final DataContext dataContext) {
|
||||
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
if (project == null) return null;
|
||||
|
||||
final Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("editor " + editor);
|
||||
}
|
||||
if (editor != null) {
|
||||
final PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
|
||||
if (file == null) return null;
|
||||
@@ -44,6 +47,9 @@ public class JavaTypeHierarchyProvider implements HierarchyProvider {
|
||||
final PsiElement targetElement = TargetElementUtilBase.findTargetElement(editor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED |
|
||||
TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED |
|
||||
TargetElementUtilBase.LOOKUP_ITEM_ACCEPTED);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("target element " + targetElement);
|
||||
}
|
||||
if (targetElement instanceof PsiClass) {
|
||||
return targetElement;
|
||||
}
|
||||
@@ -51,6 +57,9 @@ public class JavaTypeHierarchyProvider implements HierarchyProvider {
|
||||
final int offset = editor.getCaretModel().getOffset();
|
||||
PsiElement element = file.findElementAt(offset);
|
||||
while (element != null) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("context element " + element);
|
||||
}
|
||||
if (element instanceof PsiFile) {
|
||||
if (!(element instanceof PsiClassOwner)) return null;
|
||||
final PsiClass[] classes = ((PsiClassOwner)element).getClasses();
|
||||
|
||||
+11
-1
@@ -22,6 +22,7 @@ import com.intellij.ide.hierarchy.HierarchyProvider;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
@@ -41,6 +42,7 @@ import java.util.List;
|
||||
* @author yole
|
||||
*/
|
||||
public abstract class BrowseHierarchyActionBase extends AnAction {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.hierarchy.actions.BrowseHierarchyActionBase");
|
||||
private final LanguageExtension<HierarchyProvider> myExtension;
|
||||
|
||||
protected BrowseHierarchyActionBase(final LanguageExtension<HierarchyProvider> extension) {
|
||||
@@ -110,7 +112,15 @@ public abstract class BrowseHierarchyActionBase extends AnAction {
|
||||
|
||||
private boolean isEnabled(final AnActionEvent e) {
|
||||
final HierarchyProvider provider = getProvider(e);
|
||||
return provider != null && provider.getTarget(e.getDataContext()) != null;
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Using provider " + provider);
|
||||
}
|
||||
if (provider == null) return false;
|
||||
PsiElement target = provider.getTarget(e.getDataContext());
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Target: " + target);
|
||||
}
|
||||
return target != null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user