From 49ac249738b766197666d251bcbfc2aaf276a797 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 31 Oct 2025 19:16:03 +0300 Subject: [PATCH 1/2] Removing deprecated unused action groups: "Debugger.EvaluationDialogPopup", "Debugger.FramePanelPopup", "Debugger.InspectPanelPopup", "Debugger.WatchesPanelPopup". Removing DebuggerAction.isContextView() related to these groups. Removing ToggleFieldBreakpointAction functionality related to this isContextView() check. --- .../debugger/impl/actions/DebuggerAction.java | 12 --- .../impl/actions/DebuggerActions.java | 4 - .../actions/ToggleFieldBreakpointAction.java | 72 +-------------- plugin/src/main/resources/META-INF/plugin.xml | 88 ------------------- 4 files changed, 1 insertion(+), 175 deletions(-) diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerAction.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerAction.java index 9395e47cf8..9f18b6f7cb 100644 --- a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerAction.java +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerAction.java @@ -43,7 +43,6 @@ import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; -import java.util.Set; /** * Class DebuggerAction @@ -51,13 +50,6 @@ * @author Jeka */ public abstract class DebuggerAction extends AnAction { - private static final Set POPUP_PLACES = Set.of( - DebuggerActions.EVALUATION_DIALOG_POPUP, - DebuggerActions.FRAME_PANEL_POPUP, - DebuggerActions.WATCH_PANEL_POPUP, - DebuggerActions.INSPECT_PANEL_POPUP - ); - private static final DebuggerTreeNodeImpl[] EMPTY_TREE_NODE_ARRAY = new DebuggerTreeNodeImpl[0]; protected DebuggerAction(@Nonnull LocalizeValue text) { @@ -129,10 +121,6 @@ public static DebuggerStateManager getContextManager(DataContext dataContext) { return panel == null ? null : panel.getContextManager(); } - public static boolean isContextView(AnActionEvent e) { - return POPUP_PLACES.contains(e.getPlace()); - } - public static Disposable installEditAction(JTree tree, String actionName) { DoubleClickListener listener = new DoubleClickListener() { @Override diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerActions.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerActions.java index a7feeea1cd..00b519f497 100644 --- a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerActions.java +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/DebuggerActions.java @@ -22,11 +22,7 @@ */ public interface DebuggerActions extends XDebuggerActions { String POP_FRAME = "Debugger.PopFrame"; - String EVALUATION_DIALOG_POPUP = "Debugger.EvaluationDialogPopup"; - String FRAME_PANEL_POPUP = "Debugger.FramePanelPopup"; - String INSPECT_PANEL_POPUP = "Debugger.InspectPanelPopup"; String THREADS_PANEL_POPUP = "Debugger.ThreadsPanelPopup"; - String WATCH_PANEL_POPUP = "Debugger.WatchesPanelPopup"; String REMOVE_WATCH = "Debugger.RemoveWatch"; String NEW_WATCH = "Debugger.NewWatch"; String EDIT_WATCH = "Debugger.EditWatch"; diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/ToggleFieldBreakpointAction.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/ToggleFieldBreakpointAction.java index 42a1235c6f..24d09010c2 100644 --- a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/ToggleFieldBreakpointAction.java +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/ToggleFieldBreakpointAction.java @@ -16,24 +16,19 @@ package com.intellij.java.debugger.impl.actions; import com.intellij.java.debugger.SourcePosition; -import com.intellij.java.debugger.engine.DebuggerUtils; import com.intellij.java.debugger.impl.DebuggerContextImpl; import com.intellij.java.debugger.impl.DebuggerManagerEx; -import com.intellij.java.debugger.impl.DebuggerSession; -import com.intellij.java.debugger.impl.InstanceFilter; import com.intellij.java.debugger.impl.engine.DebugProcessImpl; import com.intellij.java.debugger.impl.engine.SourcePositionProvider; import com.intellij.java.debugger.impl.engine.events.DebuggerContextCommandImpl; import com.intellij.java.debugger.impl.ui.breakpoints.Breakpoint; import com.intellij.java.debugger.impl.ui.breakpoints.BreakpointManager; import com.intellij.java.debugger.impl.ui.breakpoints.FieldBreakpoint; -import com.intellij.java.debugger.impl.ui.impl.watch.DebuggerTree; import com.intellij.java.debugger.impl.ui.impl.watch.DebuggerTreeNodeImpl; import com.intellij.java.debugger.impl.ui.impl.watch.FieldDescriptorImpl; import com.intellij.java.debugger.localize.JavaDebuggerLocalize; import com.intellij.java.language.impl.JavaClassFileType; import com.intellij.java.language.impl.JavaFileType; -import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiField; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ActionImpl; @@ -41,18 +36,14 @@ import consulo.dataContext.DataContext; import consulo.document.Document; import consulo.fileEditor.FileEditorManager; -import consulo.internal.com.sun.jdi.Field; -import consulo.internal.com.sun.jdi.ObjectReference; import consulo.language.psi.PsiDocumentManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; -import consulo.language.psi.scope.GlobalSearchScope; import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.action.ActionPlaces; import consulo.ui.ex.action.AnAction; import consulo.ui.ex.action.AnActionEvent; -import consulo.ui.ex.action.Presentation; import consulo.util.lang.ref.SimpleReference; import consulo.virtualFileSystem.VirtualFile; import consulo.virtualFileSystem.fileType.FileType; @@ -93,19 +84,6 @@ public void actionPerformed(AnActionEvent e) { if (breakpoint == null) { FieldBreakpoint fieldBreakpoint = manager.addFieldBreakpoint(document, offset); if (fieldBreakpoint != null) { - if (DebuggerAction.isContextView(e)) { - DebuggerTreeNodeImpl selectedNode = DebuggerAction.getSelectedNode(e.getDataContext()); - if (selectedNode != null && selectedNode.getDescriptor() instanceof FieldDescriptorImpl fieldDescriptor) { - ObjectReference object = fieldDescriptor.getObject(); - if (object != null) { - long id = object.uniqueID(); - InstanceFilter[] instanceFilters = new InstanceFilter[]{InstanceFilter.create(Long.toString(id))}; - fieldBreakpoint.setInstanceFilters(instanceFilters); - fieldBreakpoint.setInstanceFiltersEnabled(true); - } - } - } - Editor editor = e.getData(Editor.KEY); if (editor != null) { manager.editBreakpoint(fieldBreakpoint, editor); @@ -122,31 +100,7 @@ public void actionPerformed(AnActionEvent e) { @Override @RequiredUIAccess public void update(@Nonnull AnActionEvent event) { - SourcePosition place = getPlace(event); - boolean toEnable = place != null; - - Presentation presentation = event.getPresentation(); - if (POPUP_PLACES.contains(event.getPlace())) { - presentation.setVisible(toEnable); - } - else if (DebuggerAction.isContextView(event)) { - presentation.setTextValue(JavaDebuggerLocalize.actionAddFieldWatchpointText()); - Project project = event.getData(Project.KEY); - if (project != null && place != null) { - Document document = PsiDocumentManager.getInstance(project).getDocument(place.getFile()); - if (document != null) { - int offset = place.getOffset(); - BreakpointManager breakpointManager = DebuggerManagerEx.getInstanceEx(project).getBreakpointManager(); - Breakpoint fieldBreakpoint = - offset >= 0 ? breakpointManager.findBreakpoint(document, offset, FieldBreakpoint.CATEGORY) : null; - if (fieldBreakpoint != null) { - presentation.setEnabled(false); - return; - } - } - } - } - presentation.setVisible(toEnable); + event.getPresentation().setVisible(getPlace(event) != null); } @Nullable @@ -187,30 +141,6 @@ public void threadAction() { } } - if (DebuggerAction.isContextView(event)) { - DebuggerTree tree = event.getData(DebuggerTree.DATA_KEY); - if (tree != null && tree.getSelectionPath() != null) { - DebuggerTreeNodeImpl node = (DebuggerTreeNodeImpl) tree.getSelectionPath().getLastPathComponent(); - if (node != null && node.getDescriptor() instanceof FieldDescriptorImpl fieldDescriptor) { - Field field = fieldDescriptor.getField(); - DebuggerSession session = tree.getDebuggerContext().getDebuggerSession(); - PsiClass psiClass = DebuggerUtils.findClass( - field.declaringType().name(), - project, - session != null ? session.getSearchScope() : GlobalSearchScope.allScope(project) - ); - if (psiClass != null) { - psiClass = (PsiClass) psiClass.getNavigationElement(); - PsiField psiField = psiClass.findFieldByName(field.name(), true); - if (psiField != null) { - return SourcePosition.createFromElement(psiField); - } - } - } - } - return null; - } - Editor editor = event.getData(Editor.KEY); if (editor == null) { editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index 7659353fcb..d3efbfded7 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -73,68 +73,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -149,31 +87,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 68186006e9f4b6dafec7749e0496bf5304642396 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 31 Oct 2025 19:24:37 +0300 Subject: [PATCH 2/2] Moving debugger action groups from plugin.xml to classes. --- .../impl/actions/JavaCompileGroup.java | 47 +++++++++++++++++ .../JavaEditorPopupMenuDebugGroup.java | 43 ++++++++++++++++ .../actions/JavaThreadsPanelPopupGroup.java | 50 +++++++++++++++++++ .../impl/actions/RepresentationGroup.java | 41 +++++++++++++++ plugin/src/main/resources/META-INF/plugin.xml | 36 ------------- 5 files changed, 181 insertions(+), 36 deletions(-) create mode 100644 java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaCompileGroup.java create mode 100644 java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaEditorPopupMenuDebugGroup.java create mode 100644 java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaThreadsPanelPopupGroup.java create mode 100644 java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/RepresentationGroup.java diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaCompileGroup.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaCompileGroup.java new file mode 100644 index 0000000000..826b60f790 --- /dev/null +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaCompileGroup.java @@ -0,0 +1,47 @@ +/* + * 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.debugger.impl.actions; + +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 = "JavaCompileGroup", + children = { + @ActionRef(type = ToggleMethodBreakpointAction.class), + @ActionRef(type = ToggleFieldBreakpointAction.class), + @ActionRef(type = AnSeparator.class) + }, + parents = { + @ActionParentRef(value = @ActionRef(id = "ProjectViewCompileGroup"), anchor = ActionRefAnchor.FIRST), + @ActionParentRef(value = @ActionRef(id = "StructureViewCompileGroup"), anchor = ActionRefAnchor.FIRST) + } +) +public class JavaCompileGroup extends DefaultActionGroup implements DumbAware { + public JavaCompileGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaEditorPopupMenuDebugGroup.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaEditorPopupMenuDebugGroup.java new file mode 100644 index 0000000000..46ffd3558a --- /dev/null +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaEditorPopupMenuDebugGroup.java @@ -0,0 +1,43 @@ +/* + * 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.debugger.impl.actions; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +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 = "EditorPopupMenuDebugJava", + children = { + @ActionRef(type = AnSeparator.class), + @ActionRef(type = ToggleFieldBreakpointAction.class), + @ActionRef(type = AnSeparator.class) + }, + parents = @ActionParentRef(@ActionRef(id = "EditorPopupMenuDebug")) +) +public class JavaEditorPopupMenuDebugGroup extends DefaultActionGroup implements DumbAware { + public JavaEditorPopupMenuDebugGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaThreadsPanelPopupGroup.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaThreadsPanelPopupGroup.java new file mode 100644 index 0000000000..1cf401d852 --- /dev/null +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/JavaThreadsPanelPopupGroup.java @@ -0,0 +1,50 @@ +/* + * 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.debugger.impl.actions; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionRef; +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 = DebuggerActions.THREADS_PANEL_POPUP, + children = { + //@ActionRef(type = ResumeThreadAction.class), + //@ActionRef(type = FreezeThreadAction.class), + @ActionRef(type = InterruptThreadAction.class), + //@ActionRef(id = "Debugger.ShowFrame"), + @ActionRef(id = DebuggerActions.POP_FRAME), + //@ActionRef(id = DebuggerActions.EDIT_FRAME_SOURCE), + //@ActionRef(id = "Debugger.EditTypeSource"), + //@ActionRef(id = "EditSource"), + @ActionRef(type = AnSeparator.class), + @ActionRef(type = ExportThreadsAction.class), + @ActionRef(type = AnSeparator.class), + @ActionRef(type = CustomizeThreadsViewAction.class) + } +) +public class JavaThreadsPanelPopupGroup extends DefaultActionGroup implements DumbAware { + public JavaThreadsPanelPopupGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/RepresentationGroup.java b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/RepresentationGroup.java new file mode 100644 index 0000000000..4c13e9f6a7 --- /dev/null +++ b/java-debugger-impl/src/main/java/com/intellij/java/debugger/impl/actions/RepresentationGroup.java @@ -0,0 +1,41 @@ +/* + * 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.debugger.impl.actions; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionRef; +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 = DebuggerActions.REPRESENTATION_LIST, + children = { + @ActionRef(type = CreateRendererAction.class), + @ActionRef(type = AnSeparator.class), + @ActionRef(type = AutoRendererAction.class) + } +) +public class RepresentationGroup extends DefaultActionGroup implements DumbAware { + public RepresentationGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index d3efbfded7..6a5f819c9f 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -51,41 +51,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file