debug logging for IDEA-120339 Type Hierarchy works only when the cursor is over a class name

This commit is contained in:
peter
2014-02-11 18:17:35 +01:00
parent bc2af62065
commit 76846b723a
2 changed files with 22 additions and 3 deletions
@@ -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();
@@ -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