mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[debugger] Add Resume All action for JVM debugger
GitOrigin-RevId: 93541b04b745b9f7a31cac04bf4eedb3505054ba
This commit is contained in:
committed by
intellij-monorepo-bot
parent
800a1404a9
commit
7b43dc3035
+34
@@ -0,0 +1,34 @@
|
||||
// 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.debugger.actions
|
||||
|
||||
import com.intellij.debugger.engine.DebugProcessImpl
|
||||
import com.intellij.debugger.engine.SuspendContextImpl
|
||||
import com.intellij.debugger.engine.events.DebuggerCommandImpl
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.xdebugger.impl.actions.DebuggerActionHandler
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil
|
||||
|
||||
class ResumeAllJavaThreadsActionHandler(val debugProcess: DebugProcessImpl) : DebuggerActionHandler() {
|
||||
override fun perform(project: Project, event: AnActionEvent) {
|
||||
val xdebugProcess = debugProcess.xdebugProcess ?: return
|
||||
|
||||
debugProcess.managerThread.schedule(object : DebuggerCommandImpl() {
|
||||
override fun action() {
|
||||
val contexts: MutableList<SuspendContextImpl> = debugProcess.suspendManager.pausedContexts
|
||||
for (context in contexts) {
|
||||
if (!context.isResumed) {
|
||||
debugProcess.suspendManager.resume(context)
|
||||
}
|
||||
}
|
||||
DebuggerUIUtil.invokeLater(Runnable {
|
||||
xdebugProcess.session.resume()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun isEnabled(project: Project, event: AnActionEvent): Boolean {
|
||||
return !debugProcess.suspendManager.pausedContexts.isEmpty()
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ package com.intellij.debugger.engine;
|
||||
import com.intellij.debugger.JavaDebuggerBundle;
|
||||
import com.intellij.debugger.actions.JvmDropFrameActionHandler;
|
||||
import com.intellij.debugger.actions.JvmSmartStepIntoActionHandler;
|
||||
import com.intellij.debugger.actions.ResumeAllJavaThreadsActionHandler;
|
||||
import com.intellij.debugger.engine.dfaassist.DfaAssist;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContext;
|
||||
import com.intellij.debugger.engine.events.DebuggerCommandImpl;
|
||||
@@ -51,8 +52,10 @@ import com.intellij.xdebugger.frame.XDropFrameHandler;
|
||||
import com.intellij.xdebugger.frame.XStackFrame;
|
||||
import com.intellij.xdebugger.frame.XSuspendContext;
|
||||
import com.intellij.xdebugger.frame.XValueMarkerProvider;
|
||||
import com.intellij.xdebugger.impl.ThreadsActionsProvider;
|
||||
import com.intellij.xdebugger.impl.XDebugSessionImpl;
|
||||
import com.intellij.xdebugger.impl.XDebuggerUtilImpl;
|
||||
import com.intellij.xdebugger.impl.actions.DebuggerActionHandler;
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
|
||||
import com.intellij.xdebugger.memory.component.InstancesTracker;
|
||||
import com.intellij.xdebugger.memory.component.MemoryViewManager;
|
||||
@@ -84,7 +87,7 @@ public class JavaDebugProcess extends XDebugProcess {
|
||||
};
|
||||
|
||||
public static JavaDebugProcess create(final @NotNull XDebugSession session, final @NotNull DebuggerSession javaSession) {
|
||||
JavaDebugProcess res = new JavaDebugProcess(session, javaSession);
|
||||
JavaDebugProcess res = new JavaDebugProcessWithThreadsActions(session, javaSession);
|
||||
javaSession.getProcess().setXDebugProcess(res);
|
||||
return res;
|
||||
}
|
||||
@@ -545,4 +548,18 @@ public class JavaDebugProcess extends XDebugProcess {
|
||||
public @Nullable XDropFrameHandler getDropFrameHandler() {
|
||||
return myDropFrameActionActionHandler;
|
||||
}
|
||||
|
||||
private static final class JavaDebugProcessWithThreadsActions extends JavaDebugProcess implements ThreadsActionsProvider {
|
||||
private JavaDebugProcessWithThreadsActions(@NotNull XDebugSession session, @NotNull DebuggerSession javaSession) {
|
||||
super(session, javaSession);
|
||||
myResumeAllJavaThreadsActionHandler = new ResumeAllJavaThreadsActionHandler(getDebuggerSession().getProcess());
|
||||
}
|
||||
|
||||
private final ResumeAllJavaThreadsActionHandler myResumeAllJavaThreadsActionHandler;
|
||||
|
||||
@Override
|
||||
public @Nullable DebuggerActionHandler getThawAllThreadsHandler() {
|
||||
return myResumeAllJavaThreadsActionHandler;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user