From 2c590397df033aa8d80dda6e6f12db8c4c3607ff Mon Sep 17 00:00:00 2001 From: Maksim Zuev Date: Thu, 21 Aug 2025 16:01:40 +0200 Subject: [PATCH] [rd debugger] IDEA-377734 Move customize data views action to frontend GitOrigin-RevId: c95a0691eeb4477dfc87eb621da36f108e0ce8e8 --- java/debugger/backend/BUILD.bazel | 1 + .../intellij.java.debugger.impl.backend.iml | 1 + .../BackendJavaDebuggerLuxActionsApi.kt | 10 +++++ .../impl/resources/META-INF/java-debugger.xml | 4 -- ...a => CustomizeContextViewActionUtils.java} | 29 ++------------- java/debugger/shared/BUILD.bazel | 1 + .../intellij.java.debugger.impl.shared.iml | 1 + .../intellij.java.debugger.impl.shared.xml | 5 +++ .../actions/CustomizeContextViewAction.kt | 37 +++++++++++++++++++ .../shared/rpc/JavaDebuggerLuxActionsApi.kt | 2 + 10 files changed, 62 insertions(+), 29 deletions(-) rename java/debugger/impl/src/com/intellij/debugger/actions/{CustomizeContextViewAction.java => CustomizeContextViewActionUtils.java} (72%) create mode 100644 java/debugger/shared/src/com/intellij/java/debugger/impl/shared/actions/CustomizeContextViewAction.kt diff --git a/java/debugger/backend/BUILD.bazel b/java/debugger/backend/BUILD.bazel index 59100486a84c..693d98b3c276 100644 --- a/java/debugger/backend/BUILD.bazel +++ b/java/debugger/backend/BUILD.bazel @@ -35,6 +35,7 @@ jvm_library( "//platform/xdebugger-impl/rpc", "//platform/projectModel-api:projectModel", "//platform/util/jdom", + "//platform/project/shared:project", ], runtime_deps = [":backend_resources"] ) diff --git a/java/debugger/backend/intellij.java.debugger.impl.backend.iml b/java/debugger/backend/intellij.java.debugger.impl.backend.iml index bcd169a6251e..00f8f7e21d09 100644 --- a/java/debugger/backend/intellij.java.debugger.impl.backend.iml +++ b/java/debugger/backend/intellij.java.debugger.impl.backend.iml @@ -55,5 +55,6 @@ + \ No newline at end of file diff --git a/java/debugger/backend/src/com/intellij/java/debugger/impl/backend/BackendJavaDebuggerLuxActionsApi.kt b/java/debugger/backend/src/com/intellij/java/debugger/impl/backend/BackendJavaDebuggerLuxActionsApi.kt index a8212fb80188..86e35ed101ae 100644 --- a/java/debugger/backend/src/com/intellij/java/debugger/impl/backend/BackendJavaDebuggerLuxActionsApi.kt +++ b/java/debugger/backend/src/com/intellij/java/debugger/impl/backend/BackendJavaDebuggerLuxActionsApi.kt @@ -2,6 +2,7 @@ package com.intellij.java.debugger.impl.backend import com.intellij.debugger.actions.CreateRendererActionUtils +import com.intellij.debugger.actions.CustomizeContextViewActionUtils import com.intellij.debugger.engine.JavaDebugProcess import com.intellij.debugger.engine.JavaValue import com.intellij.debugger.memory.action.CalculateRetainedSizeActionUtil @@ -10,6 +11,8 @@ import com.intellij.debugger.memory.filtering.ClassInstancesProvider import com.intellij.debugger.memory.ui.InstancesWindow import com.intellij.java.debugger.impl.shared.rpc.JavaDebuggerLuxActionsApi import com.intellij.openapi.application.EDT +import com.intellij.platform.project.ProjectId +import com.intellij.platform.project.findProject import com.intellij.xdebugger.impl.rpc.XValueId import com.intellij.xdebugger.impl.rpc.models.BackendXValueModel import com.sun.jdi.ReferenceType @@ -45,4 +48,11 @@ internal class BackendJavaDebuggerLuxActionsApi : JavaDebuggerLuxActionsApi { CreateRendererActionUtils.showCreateRendererDialog(javaValue) } } + + override suspend fun showCustomizeDataViewsDialog(projectId: ProjectId) { + val project = projectId.findProject() + withContext(Dispatchers.EDT) { + CustomizeContextViewActionUtils.showDialog(project) + } + } } \ No newline at end of file diff --git a/java/debugger/impl/resources/META-INF/java-debugger.xml b/java/debugger/impl/resources/META-INF/java-debugger.xml index 368fd3060d78..c65b6c07eb75 100644 --- a/java/debugger/impl/resources/META-INF/java-debugger.xml +++ b/java/debugger/impl/resources/META-INF/java-debugger.xml @@ -216,10 +216,6 @@ - - - - diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewActionUtils.java similarity index 72% rename from java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java rename to java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewActionUtils.java index d2f59084a599..10e841092b98 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewActionUtils.java @@ -4,33 +4,23 @@ package com.intellij.debugger.actions; import com.intellij.debugger.JavaDebuggerBundle; import com.intellij.debugger.settings.JavaDebuggerSettings; import com.intellij.debugger.settings.NodeRendererSettings; -import com.intellij.idea.ActionsBundle; -import com.intellij.openapi.actionSystem.ActionUpdateThread; -import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.TabbedConfigurable; import com.intellij.openapi.options.ex.SingleConfigurableEditor; import com.intellij.openapi.project.Project; import com.intellij.util.ui.JBUI; -import com.intellij.xdebugger.impl.ui.tree.actions.XDebuggerTreeActionBase; -import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.List; -public class CustomizeContextViewAction extends XDebuggerTreeActionBase { +@ApiStatus.Internal +public final class CustomizeContextViewActionUtils { private static int ourLastSelectedTabIndex = 0; - @Override - public void actionPerformed(@NotNull AnActionEvent e) { - perform(null, "", e); - } - - @Override - protected void perform(XValueNodeImpl node, @NotNull String nodeName, AnActionEvent e) { - final Project project = e.getProject(); + public static void showDialog(Project project) { final MyTabbedConfigurable configurable = new MyTabbedConfigurable(); SingleConfigurableEditor editor = new SingleConfigurableEditor(project, configurable) { @Override @@ -87,15 +77,4 @@ public class CustomizeContextViewAction extends XDebuggerTreeActionBase { return myTabbedPane.getSelectedIndex(); } } - - @Override - public @NotNull ActionUpdateThread getActionUpdateThread() { - return ActionUpdateThread.BGT; - } - - @Override - public void update(@NotNull AnActionEvent e) { - e.getPresentation().setText(ActionsBundle.actionText("Debugger.CustomizeContextView")); - e.getPresentation().setEnabledAndVisible(DebuggerAction.isInJavaSession(e)); - } } diff --git a/java/debugger/shared/BUILD.bazel b/java/debugger/shared/BUILD.bazel index 23786e048a24..f05267567d4d 100644 --- a/java/debugger/shared/BUILD.bazel +++ b/java/debugger/shared/BUILD.bazel @@ -34,6 +34,7 @@ jvm_library( "//platform/util/coroutines", "//platform/xdebugger-impl/rpc", "//platform/xdebugger-impl/shared", + "//platform/project/shared:project", ], runtime_deps = [":shared_resources"] ) diff --git a/java/debugger/shared/intellij.java.debugger.impl.shared.iml b/java/debugger/shared/intellij.java.debugger.impl.shared.iml index e0c48b3acaf2..af385b6bf711 100644 --- a/java/debugger/shared/intellij.java.debugger.impl.shared.iml +++ b/java/debugger/shared/intellij.java.debugger.impl.shared.iml @@ -54,5 +54,6 @@ + \ No newline at end of file diff --git a/java/debugger/shared/resources/intellij.java.debugger.impl.shared.xml b/java/debugger/shared/resources/intellij.java.debugger.impl.shared.xml index 8bac8dfd444d..adc577189e7f 100644 --- a/java/debugger/shared/resources/intellij.java.debugger.impl.shared.xml +++ b/java/debugger/shared/resources/intellij.java.debugger.impl.shared.xml @@ -75,5 +75,10 @@ + + + + + diff --git a/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/actions/CustomizeContextViewAction.kt b/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/actions/CustomizeContextViewAction.kt new file mode 100644 index 000000000000..b021804efa91 --- /dev/null +++ b/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/actions/CustomizeContextViewAction.kt @@ -0,0 +1,37 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.debugger.impl.shared.actions + +import com.intellij.idea.ActionsBundle +import com.intellij.java.debugger.impl.shared.SharedJavaDebuggerSession +import com.intellij.java.debugger.impl.shared.rpc.JavaDebuggerLuxActionsApi +import com.intellij.openapi.actionSystem.ActionUpdateThread +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification +import com.intellij.platform.project.projectId +import com.intellij.xdebugger.impl.ui.DebuggerUIUtil +import com.intellij.xdebugger.impl.ui.tree.actions.XDebuggerTreeActionBase +import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl +import kotlinx.coroutines.launch + +private class CustomizeContextViewAction : XDebuggerTreeActionBase(), ActionRemoteBehaviorSpecification.FrontendOtherwiseBackend { + override fun actionPerformed(e: AnActionEvent) { + perform(null, "", e) + } + + override fun perform(node: XValueNodeImpl?, nodeName: String, e: AnActionEvent) { + val session = DebuggerUIUtil.getSessionProxy(e) ?: return + session.coroutineScope.launch { + JavaDebuggerLuxActionsApi.getInstance().showCustomizeDataViewsDialog(session.project.projectId()) + } + } + + override fun getActionUpdateThread(): ActionUpdateThread { + return ActionUpdateThread.BGT + } + + override fun update(e: AnActionEvent) { + e.presentation.setText(ActionsBundle.actionText("Debugger.CustomizeContextView")) + val javaSession = SharedJavaDebuggerSession.findSession(e) + e.presentation.setEnabledAndVisible(javaSession != null) + } +} diff --git a/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/rpc/JavaDebuggerLuxActionsApi.kt b/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/rpc/JavaDebuggerLuxActionsApi.kt index 877a64802862..ecc501b14d45 100644 --- a/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/rpc/JavaDebuggerLuxActionsApi.kt +++ b/java/debugger/shared/src/com/intellij/java/debugger/impl/shared/rpc/JavaDebuggerLuxActionsApi.kt @@ -1,6 +1,7 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.debugger.impl.shared.rpc +import com.intellij.platform.project.ProjectId import com.intellij.platform.rpc.RemoteApiProviderService import com.intellij.xdebugger.impl.rpc.XValueId import fleet.rpc.RemoteApi @@ -12,6 +13,7 @@ interface JavaDebuggerLuxActionsApi : RemoteApi { suspend fun showInstancesDialog(xValueId: XValueId) suspend fun showCalculateRetainedSizeDialog(xValueId: XValueId, nodeName: String) suspend fun showCreateRendererDialog(xValueId: XValueId) + suspend fun showCustomizeDataViewsDialog(projectId: ProjectId) companion object { @JvmStatic