From 0c818a9b37f9cdc5d864fd8ccad05373c5193f29 Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 30 Oct 2025 17:56:56 +0300 Subject: [PATCH] Adding @ActionImpl annotations to Hierarchy actions. Refactoring and localizing. --- .../hierarchy/call/CallHierarchyBrowser.java | 7 +-- .../call/JavaBaseOnThisMethodAction.java | 29 ++++++++++++ .../method/ImplementMethodAction.java | 17 +++++-- .../method/JavaBaseOnThisMethodAction.java | 29 ++++++++++++ .../JavaMethodHierarchyPopupMenuGroup.java | 44 +++++++++++++++++ .../method/JavaMethodHierarchyProvider.java | 2 +- .../method/MethodHierarchyBrowser.java | 14 +++--- .../method/OverrideImplementMethodAction.java | 47 ++++++++----------- .../method/OverrideMethodAction.java | 21 ++++++--- .../type/JavaBaseOnThisTypeAction.java | 41 ++++++++++++++++ .../hierarchy/type/TypeHierarchyBrowser.java | 14 +----- plugin/src/main/resources/META-INF/plugin.xml | 23 +-------- 12 files changed, 202 insertions(+), 86 deletions(-) create mode 100644 plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/JavaBaseOnThisMethodAction.java create mode 100644 plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaBaseOnThisMethodAction.java create mode 100644 plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyPopupMenuGroup.java create mode 100644 plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaBaseOnThisTypeAction.java diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyBrowser.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyBrowser.java index 617cb45d5..8eaaf840b 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyBrowser.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/CallHierarchyBrowser.java @@ -44,10 +44,10 @@ public CallHierarchyBrowser(@Nonnull Project project, @Nonnull PsiMethod method) @Override protected void createTrees(@Nonnull Map type2TreeMap) { - ActionGroup group = (ActionGroup)ActionManager.getInstance().getAction(IdeActions.GROUP_CALL_HIERARCHY_POPUP); + ActionGroup group = (ActionGroup) ActionManager.getInstance().getAction(IdeActions.GROUP_CALL_HIERARCHY_POPUP); JTree tree1 = createTree(false); PopupHandler.installPopupHandler(tree1, group, ActionPlaces.CALL_HIERARCHY_VIEW_POPUP, ActionManager.getInstance()); - BaseOnThisMethodAction baseOnThisMethodAction = new BaseOnThisMethodAction(); + BaseOnThisMethodAction baseOnThisMethodAction = new JavaBaseOnThisMethodAction(); baseOnThisMethodAction .registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_CALL_HIERARCHY).getShortcutSet(), tree1); type2TreeMap.put(CALLEE_TYPE, tree1); @@ -98,7 +98,4 @@ else if (CALLEE_TYPE.equals(typeName)) { protected Comparator getComparator() { return JavaHierarchyUtil.getComparator(myProject); } - - public static final class BaseOnThisMethodAction extends CallHierarchyBrowserBase.BaseOnThisMethodAction { - } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/JavaBaseOnThisMethodAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/JavaBaseOnThisMethodAction.java new file mode 100644 index 000000000..f43708e91 --- /dev/null +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/call/JavaBaseOnThisMethodAction.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.java.impl.ide.hierarchy.call; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; +import consulo.ide.impl.idea.ide.hierarchy.CallHierarchyBrowserBase; + +@ActionImpl( + id = "CallHierarchy.BaseOnThisType", + parents = @ActionParentRef(value = @ActionRef(id = "CallHierarchyPopupMenu"), anchor = ActionRefAnchor.FIRST) +) +public final class JavaBaseOnThisMethodAction extends CallHierarchyBrowserBase.BaseOnThisMethodAction { +} diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/ImplementMethodAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/ImplementMethodAction.java index 030bcf5e8..9a3b02975 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/ImplementMethodAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/ImplementMethodAction.java @@ -15,20 +15,29 @@ */ package com.intellij.java.impl.ide.hierarchy.method; +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionRef; import consulo.ide.localize.IdeLocalize; +import consulo.platform.base.localize.ActionLocalize; import consulo.ui.ex.action.Presentation; +@ActionImpl(id = "MethodHierarchy.ImplementMethodAction", shortcutFrom = @ActionRef(id = "ImplementMethods")) public final class ImplementMethodAction extends OverrideImplementMethodAction { + public ImplementMethodAction() { + super( + ActionLocalize.actionMethodhierarchyImplementmethodactionText(), + ActionLocalize.actionMethodhierarchyImplementmethodactionDescription() + ); + } + @Override protected final void update(Presentation presentation, int toImplement, int toOverride) { if (toImplement > 0) { - presentation.setEnabled(true); - presentation.setVisible(true); + presentation.setEnabledAndVisible(true); presentation.setTextValue(toImplement == 1 ? IdeLocalize.actionImplementMethod() : IdeLocalize.actionImplementMethods()); } else { - presentation.setEnabled(false); - presentation.setVisible(false); + presentation.setEnabledAndVisible(false); } } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaBaseOnThisMethodAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaBaseOnThisMethodAction.java new file mode 100644 index 000000000..717a58bce --- /dev/null +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaBaseOnThisMethodAction.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.java.impl.ide.hierarchy.method; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; +import consulo.ide.impl.idea.ide.hierarchy.MethodHierarchyBrowserBase; + +@ActionImpl( + id = "MethodHierarchy.BaseOnThisType", + parents = @ActionParentRef(value = @ActionRef(id = "MethodHierarchyPopupMenu"), anchor = ActionRefAnchor.FIRST) +) +public class JavaBaseOnThisMethodAction extends MethodHierarchyBrowserBase.BaseOnThisMethodAction { +} diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyPopupMenuGroup.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyPopupMenuGroup.java new file mode 100644 index 000000000..006f8b5d0 --- /dev/null +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyPopupMenuGroup.java @@ -0,0 +1,44 @@ +/* + * Copyright 2013-2025 consulo.io + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.java.impl.ide.hierarchy.method; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; +import consulo.application.dumb.DumbAware; +import consulo.localize.LocalizeValue; +import consulo.ui.ex.action.AnSeparator; +import consulo.ui.ex.action.DefaultActionGroup; + +/** + * @author UNV + * @since 2025-10-30 + */ +@ActionImpl( + id = "JavaMethodHierarchyPopupMenu", + children = { + @ActionRef(type = ImplementMethodAction.class), + @ActionRef(type = OverrideMethodAction.class), + @ActionRef(type = AnSeparator.class) + }, + parents = @ActionParentRef(value = @ActionRef(id = "MethodHierarchyPopupMenu"), anchor = ActionRefAnchor.FIRST) +) +public class JavaMethodHierarchyPopupMenuGroup extends DefaultActionGroup implements DumbAware { + public JavaMethodHierarchyPopupMenuGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyProvider.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyProvider.java index d812953e2..ae81aeb8b 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyProvider.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/JavaMethodHierarchyProvider.java @@ -51,8 +51,8 @@ public PsiElement getTarget(@Nonnull DataContext dataContext) { return null; } - @RequiredReadAction @Nullable + @RequiredReadAction private static PsiMethod getMethodImpl(DataContext dataContext) { Project project = dataContext.getData(Project.KEY); if (project == null) { diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyBrowser.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyBrowser.java index 0f27652dc..6b0bf89f5 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyBrowser.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/MethodHierarchyBrowser.java @@ -17,6 +17,7 @@ import com.intellij.java.impl.ide.hierarchy.JavaHierarchyUtil; import com.intellij.java.language.psi.PsiMethod; +import consulo.annotation.access.RequiredReadAction; import consulo.ide.impl.idea.ide.hierarchy.HierarchyNodeDescriptor; import consulo.ide.impl.idea.ide.hierarchy.HierarchyTreeBuilder; import consulo.ide.impl.idea.ide.hierarchy.HierarchyTreeStructure; @@ -47,10 +48,10 @@ public MethodHierarchyBrowser(Project project, PsiMethod method) { @Override protected void createTrees(@Nonnull Map trees) { JTree tree = createTree(false); - ActionGroup group = (ActionGroup)ActionManager.getInstance().getAction(IdeActions.GROUP_METHOD_HIERARCHY_POPUP); + ActionGroup group = (ActionGroup) ActionManager.getInstance().getAction(IdeActions.GROUP_METHOD_HIERARCHY_POPUP); PopupHandler.installPopupHandler(tree, group, ActionPlaces.METHOD_HIERARCHY_VIEW_POPUP, ActionManager.getInstance()); - BaseOnThisMethodAction baseOnThisMethodAction = new BaseOnThisMethodAction(); + BaseOnThisMethodAction baseOnThisMethodAction = new JavaBaseOnThisMethodAction(); baseOnThisMethodAction .registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_METHOD_HIERARCHY).getShortcutSet(), tree); @@ -83,7 +84,7 @@ protected HierarchyTreeStructure createHierarchyTreeStructure(@Nonnull String ty LOG.error("unexpected type: " + typeName); return null; } - return new MethodHierarchyTreeStructure(myProject, (PsiMethod)psiElement); + return new MethodHierarchyTreeStructure(myProject, (PsiMethod) psiElement); } @Override @@ -91,13 +92,10 @@ protected Comparator getComparator() { return JavaHierarchyUtil.getComparator(myProject); } + @RequiredReadAction public PsiMethod getBaseMethod() { HierarchyTreeBuilder builder = myBuilders.get(myCurrentViewType); - MethodHierarchyTreeStructure treeStructure = (MethodHierarchyTreeStructure)builder.getTreeStructure(); + MethodHierarchyTreeStructure treeStructure = (MethodHierarchyTreeStructure) builder.getTreeStructure(); return treeStructure.getBaseMethod(); } - - public static final class BaseOnThisMethodAction extends MethodHierarchyBrowserBase.BaseOnThisMethodAction { - } - } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideImplementMethodAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideImplementMethodAction.java index 507c63412..1579fdf0e 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideImplementMethodAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideImplementMethodAction.java @@ -21,7 +21,6 @@ import com.intellij.java.language.psi.PsiSubstitutor; import com.intellij.java.language.psi.PsiSyntheticClass; import com.intellij.java.language.psi.util.MethodSignature; -import consulo.application.Application; import consulo.dataContext.DataContext; import consulo.ide.impl.idea.ide.hierarchy.HierarchyNodeDescriptor; import consulo.ide.impl.idea.ide.hierarchy.MethodHierarchyBrowserBase; @@ -50,19 +49,19 @@ abstract class OverrideImplementMethodAction extends AnAction { private static final Logger LOG = Logger.getInstance(OverrideImplementMethodAction.class); - @RequiredUIAccess + protected OverrideImplementMethodAction(@Nonnull LocalizeValue text, @Nonnull LocalizeValue description) { + super(text, description); + } + @Override + @RequiredUIAccess public final void actionPerformed(@Nonnull AnActionEvent event) { DataContext dataContext = event.getDataContext(); - MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser)dataContext.getData(MethodHierarchyBrowserBase.DATA_KEY); + MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser) dataContext.getData(MethodHierarchyBrowserBase.DATA_KEY); if (methodHierarchyBrowser == null) { return; } - Project project = dataContext.getData(Project.KEY); - if (project == null) { - return; - } - + Project project = dataContext.getRequiredData(Project.KEY); LocalizeValue commandName = event.getPresentation().getTextValue(); CommandProcessor.getInstance().newCommand() .project(project) @@ -75,7 +74,7 @@ public final void actionPerformed(@Nonnull AnActionEvent event) { List files = new ArrayList<>(selectedDescriptors.length); for (HierarchyNodeDescriptor selectedDescriptor : selectedDescriptors) { PsiFile containingFile = - ((MethodHierarchyNodeDescriptor)selectedDescriptor).getPsiClass().getContainingFile(); + ((MethodHierarchyNodeDescriptor) selectedDescriptor).getPsiClass().getContainingFile(); if (containingFile != null) { VirtualFile vFile = containingFile.getVirtualFile(); if (vFile != null) { @@ -87,7 +86,7 @@ public final void actionPerformed(@Nonnull AnActionEvent event) { ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(VirtualFileUtil.toVirtualFileArray(files)); if (!status.hasReadonlyFiles()) { for (HierarchyNodeDescriptor selectedDescriptor : selectedDescriptors) { - PsiElement aClass = ((MethodHierarchyNodeDescriptor)selectedDescriptor).getPsiClass(); + PsiElement aClass = ((MethodHierarchyNodeDescriptor) selectedDescriptor).getPsiClass(); if (aClass instanceof PsiClass psiClass) { OverrideImplementUtil.overrideOrImplement(psiClass, methodHierarchyBrowser.getBaseMethod()); } @@ -95,7 +94,7 @@ public final void actionPerformed(@Nonnull AnActionEvent event) { ToolWindowManager.getInstance(project).activateEditorComponent(); } else { - Application.get().invokeLater( + project.getApplication().invokeLater( () -> Messages.showErrorDialog(project, status.getReadonlyFilesMessage(), commandName.get()) ); } @@ -107,23 +106,20 @@ public final void actionPerformed(@Nonnull AnActionEvent event) { }); } - @RequiredUIAccess @Override + @RequiredUIAccess public final void update(@Nonnull AnActionEvent e) { Presentation presentation = e.getPresentation(); DataContext dataContext = e.getDataContext(); MethodHierarchyBrowser methodHierarchyBrowser = - (MethodHierarchyBrowser)dataContext.getData(MethodHierarchyBrowserBase.DATA_KEY); + (MethodHierarchyBrowser) dataContext.getData(MethodHierarchyBrowserBase.DATA_KEY); if (methodHierarchyBrowser == null) { - presentation.setEnabled(false); - presentation.setVisible(false); + presentation.setEnabledAndVisible(false); return; } - Project project = dataContext.getData(Project.KEY); - if (project == null) { - presentation.setEnabled(false); - presentation.setVisible(false); + if (!dataContext.hasData(Project.KEY)) { + presentation.setEnabledAndVisible(false); return; } @@ -132,28 +128,25 @@ public final void update(@Nonnull AnActionEvent e) { int toOverride = 0; for (HierarchyNodeDescriptor descriptor : selectedDescriptors) { - if (canImplementOverride((MethodHierarchyNodeDescriptor)descriptor, methodHierarchyBrowser, true)) { + if (canImplementOverride((MethodHierarchyNodeDescriptor) descriptor, methodHierarchyBrowser, true)) { if (toOverride > 0) { // no mixed actions allowed - presentation.setEnabled(false); - presentation.setVisible(false); + presentation.setEnabledAndVisible(false); return; } toImplement++; } - else if (canImplementOverride((MethodHierarchyNodeDescriptor)descriptor, methodHierarchyBrowser, false)) { + else if (canImplementOverride((MethodHierarchyNodeDescriptor) descriptor, methodHierarchyBrowser, false)) { if (toImplement > 0) { // no mixed actions allowed - presentation.setEnabled(false); - presentation.setVisible(false); + presentation.setEnabledAndVisible(false); return; } toOverride++; } else { // no action is applicable to this node - presentation.setEnabled(false); - presentation.setVisible(false); + presentation.setEnabledAndVisible(false); return; } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideMethodAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideMethodAction.java index 447014ccd..e669c9765 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideMethodAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/method/OverrideMethodAction.java @@ -15,20 +15,27 @@ */ package com.intellij.java.impl.ide.hierarchy.method; +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionRef; import consulo.ide.localize.IdeLocalize; +import consulo.platform.base.localize.ActionLocalize; import consulo.ui.ex.action.Presentation; +@ActionImpl(id = "MethodHierarchy.OverrideMethodAction", shortcutFrom = @ActionRef(id = "OverrideMethods")) public final class OverrideMethodAction extends OverrideImplementMethodAction { + public OverrideMethodAction() { + super( + ActionLocalize.actionMethodhierarchyOverridemethodactionText(), + ActionLocalize.actionMethodhierarchyOverridemethodactionDescription() + ); + } + @Override protected final void update(Presentation presentation, int toImplement, int toOverride) { - if (toOverride > 0) { - presentation.setEnabled(true); - presentation.setVisible(true); + boolean enabled = toOverride > 0; + presentation.setEnabledAndVisible(enabled); + if (enabled) { presentation.setTextValue(toOverride == 1 ? IdeLocalize.actionOverrideMethod() : IdeLocalize.actionOverrideMethods()); } - else { - presentation.setEnabled(false); - presentation.setVisible(false); - } } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaBaseOnThisTypeAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaBaseOnThisTypeAction.java new file mode 100644 index 000000000..c7b5f1f18 --- /dev/null +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/JavaBaseOnThisTypeAction.java @@ -0,0 +1,41 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.java.impl.ide.hierarchy.type; + +import com.intellij.java.language.psi.CommonClassNames; +import com.intellij.java.language.psi.PsiClass; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; +import consulo.ide.impl.idea.ide.hierarchy.HierarchyBrowserBaseEx; +import consulo.ide.impl.idea.ide.hierarchy.TypeHierarchyBrowserBase; +import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; + +@ActionImpl( + id = "TypeHierarchy.BaseOnThisType", + parents = @ActionParentRef(value = @ActionRef(id = "TypeHierarchyPopupMenu"), anchor = ActionRefAnchor.FIRST) +) +public class JavaBaseOnThisTypeAction extends TypeHierarchyBrowserBase.BaseOnThisTypeAction { + @Override + @RequiredReadAction + protected boolean isEnabled(@Nonnull HierarchyBrowserBaseEx browser, @Nonnull PsiElement psiElement) { + return super.isEnabled(browser, psiElement) + && !CommonClassNames.JAVA_LANG_OBJECT.equals(((PsiClass) psiElement).getQualifiedName()); + } +} diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyBrowser.java b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyBrowser.java index dfe1d1d77..3c16715b4 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyBrowser.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/hierarchy/type/TypeHierarchyBrowser.java @@ -17,11 +17,9 @@ import com.intellij.java.impl.ide.hierarchy.JavaHierarchyUtil; import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; -import com.intellij.java.language.psi.CommonClassNames; import com.intellij.java.language.psi.PsiAnonymousClass; import com.intellij.java.language.psi.PsiClass; import consulo.annotation.access.RequiredReadAction; -import consulo.ide.impl.idea.ide.hierarchy.HierarchyBrowserBaseEx; import consulo.ide.impl.idea.ide.hierarchy.HierarchyNodeDescriptor; import consulo.ide.impl.idea.ide.hierarchy.HierarchyTreeStructure; import consulo.ide.impl.idea.ide.hierarchy.TypeHierarchyBrowserBase; @@ -128,17 +126,9 @@ protected String getQualifiedName(PsiElement psiElement) { return ""; } - public static class BaseOnThisTypeAction extends TypeHierarchyBrowserBase.BaseOnThisTypeAction { - @Override - protected boolean isEnabled(@Nonnull HierarchyBrowserBaseEx browser, @Nonnull PsiElement psiElement) { - return super.isEnabled(browser, psiElement) - && !CommonClassNames.JAVA_LANG_OBJECT.equals(((PsiClass)psiElement).getQualifiedName()); - } - } - @Nonnull @Override - protected TypeHierarchyBrowserBase.BaseOnThisTypeAction createBaseOnThisAction() { - return new BaseOnThisTypeAction(); + protected BaseOnThisTypeAction createBaseOnThisAction() { + return new JavaBaseOnThisTypeAction(); } } diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index ed389ba5c..7659353fc 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -1,5 +1,5 @@