summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java56
1 files changed, 29 insertions, 27 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java
index 37ee00b94eaf..af55182e3607 100644
--- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java
+++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java
@@ -18,20 +18,18 @@ package com.intellij.debugger.engine;
import com.intellij.debugger.DebuggerBundle;
import com.intellij.debugger.actions.DebuggerActions;
import com.intellij.debugger.engine.evaluation.EvaluationContext;
-import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
import com.intellij.debugger.engine.events.DebuggerCommandImpl;
import com.intellij.debugger.engine.events.DebuggerContextCommandImpl;
import com.intellij.debugger.impl.*;
+import com.intellij.debugger.jdi.StackFrameProxyImpl;
import com.intellij.debugger.settings.DebuggerSettings;
import com.intellij.debugger.ui.DebuggerContentInfo;
import com.intellij.debugger.ui.breakpoints.Breakpoint;
import com.intellij.debugger.ui.impl.ThreadsPanel;
import com.intellij.debugger.ui.impl.watch.DebuggerTreeNodeImpl;
import com.intellij.debugger.ui.impl.watch.MessageDescriptor;
-import com.intellij.debugger.ui.impl.watch.NodeDescriptorImpl;
import com.intellij.debugger.ui.impl.watch.NodeManagerImpl;
import com.intellij.debugger.ui.tree.NodeDescriptor;
-import com.intellij.debugger.ui.tree.render.DescriptorLabelListener;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.ui.ExecutionConsole;
import com.intellij.execution.ui.ExecutionConsoleEx;
@@ -150,29 +148,40 @@ public class JavaDebugProcess extends XDebugProcess {
};
session.addSessionListener(new XDebugSessionAdapter() {
@Override
- public void beforeSessionResume() {
- myJavaSession.getProcess().getManagerThread().schedule(new DebuggerCommandImpl() {
- @Override
- protected void action() throws Exception {
- myNodeManager.setHistoryByContext(getDebuggerStateManager().getContext());
- }
- @Override
- public Priority getPriority() {
- return Priority.NORMAL;
- }
- });
+ public void sessionPaused() {
+ saveNodeHistory();
}
@Override
public void stackFrameChanged() {
XStackFrame frame = session.getCurrentStackFrame();
if (frame instanceof JavaStackFrame) {
- DebuggerContextUtil.setStackFrame(javaSession.getContextManager(), ((JavaStackFrame)frame).getStackFrameProxy());
+ StackFrameProxyImpl frameProxy = ((JavaStackFrame)frame).getStackFrameProxy();
+ DebuggerContextUtil.setStackFrame(javaSession.getContextManager(), frameProxy);
+ saveNodeHistory(frameProxy);
}
}
});
}
+ public void saveNodeHistory() {
+ saveNodeHistory(getDebuggerStateManager().getContext().getFrameProxy());
+ }
+
+ private void saveNodeHistory(final StackFrameProxyImpl frameProxy) {
+ myJavaSession.getProcess().getManagerThread().invoke(new DebuggerCommandImpl() {
+ @Override
+ protected void action() throws Exception {
+ myNodeManager.setHistoryByContext(frameProxy);
+ }
+
+ @Override
+ public Priority getPriority() {
+ return Priority.NORMAL;
+ }
+ });
+ }
+
private DebuggerStateManager getDebuggerStateManager() {
return myJavaSession.getContextManager();
}
@@ -243,7 +252,7 @@ public class JavaDebugProcess extends XDebugProcess {
@Nullable
@Override
protected ProcessHandler doGetProcessHandler() {
- return myJavaSession.getProcess().getExecutionResult().getProcessHandler();
+ return myJavaSession.getProcess().getProcessHandler();
}
@NotNull
@@ -302,23 +311,16 @@ public class JavaDebugProcess extends XDebugProcess {
}
@Override
- public void registerAdditionalActions(@NotNull DefaultActionGroup leftToolbar, @NotNull DefaultActionGroup topToolbar) {
+ public void registerAdditionalActions(@NotNull DefaultActionGroup leftToolbar, @NotNull DefaultActionGroup topToolbar, @NotNull DefaultActionGroup settings) {
Constraints beforeRunner = new Constraints(Anchor.BEFORE, "Runner.Layout");
leftToolbar.add(Separator.getInstance(), beforeRunner);
leftToolbar.add(ActionManager.getInstance().getAction(DebuggerActions.EXPORT_THREADS), beforeRunner);
leftToolbar.add(ActionManager.getInstance().getAction(DebuggerActions.DUMP_THREADS), beforeRunner);
leftToolbar.add(Separator.getInstance(), beforeRunner);
- for (AnAction action : leftToolbar.getChildren(null)) {
- //TODO: maybe introduce API for extra settings?
- if (action instanceof DefaultActionGroup && "DebuggerSettings".equals(action.getTemplatePresentation().getText())) {
- DefaultActionGroup settings = (DefaultActionGroup)action;
- addActionToGroup(settings, XDebuggerActions.AUTO_TOOLTIP);
- settings.addAction(new AutoVarsSwitchAction(), Constraints.FIRST);
- settings.addAction(new WatchLastMethodReturnValueAction(), Constraints.FIRST);
- break;
- }
- }
+ addActionToGroup(settings, XDebuggerActions.AUTO_TOOLTIP);
+ settings.addAction(new AutoVarsSwitchAction(), Constraints.FIRST);
+ settings.addAction(new WatchLastMethodReturnValueAction(), Constraints.FIRST);
}
private static class AutoVarsSwitchAction extends ToggleAction {