From 76846b723a6e8ce5d2cf693dbf5dc66049fd8e2b Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 11 Feb 2014 18:15:28 +0100 Subject: [PATCH] debug logging for IDEA-120339 Type Hierarchy works only when the cursor is over a class name --- .../hierarchy/type/JavaTypeHierarchyProvider.java | 13 +++++++++++-- .../actions/BrowseHierarchyActionBase.java | 12 +++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/type/JavaTypeHierarchyProvider.java b/java/java-impl/src/com/intellij/ide/hierarchy/type/JavaTypeHierarchyProvider.java index 896edafe3536..ecde45d4705a 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/type/JavaTypeHierarchyProvider.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/type/JavaTypeHierarchyProvider.java @@ -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(); diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/actions/BrowseHierarchyActionBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/actions/BrowseHierarchyActionBase.java index 6a62a4952e85..a124f2eb8a97 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/actions/BrowseHierarchyActionBase.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/actions/BrowseHierarchyActionBase.java @@ -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 myExtension; protected BrowseHierarchyActionBase(final LanguageExtension 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