summaryrefslogtreecommitdiff
path: root/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java')
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java47
1 files changed, 27 insertions, 20 deletions
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java
index b974150d2c56..2e6f91d43924 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerManagerImpl.java
@@ -23,10 +23,8 @@ import com.intellij.execution.executors.DefaultDebugExecutor;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
-import com.intellij.execution.ui.ExecutionConsole;
-import com.intellij.execution.ui.RunContentDescriptor;
-import com.intellij.execution.ui.RunContentManagerImpl;
-import com.intellij.execution.ui.RunContentWithExecutorListener;
+import com.intellij.execution.runners.RunContentBuilder;
+import com.intellij.execution.ui.*;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.*;
@@ -119,11 +117,11 @@ public class XDebuggerManagerImpl extends XDebuggerManager
}
});
- messageBusConnection.subscribe(RunContentManagerImpl.RUN_CONTENT_TOPIC, new RunContentWithExecutorListener() {
+ messageBusConnection.subscribe(RunContentManager.TOPIC, new RunContentWithExecutorListener() {
@Override
- public void contentSelected(RunContentDescriptor descriptor, @NotNull Executor executor) {
- if (executor.equals(DefaultDebugExecutor.getDebugExecutorInstance())) {
- final XDebugSessionImpl session = mySessions.get(descriptor.getProcessHandler());
+ public void contentSelected(@Nullable RunContentDescriptor descriptor, @NotNull Executor executor) {
+ if (descriptor != null && executor.equals(DefaultDebugExecutor.getDebugExecutorInstance())) {
+ XDebugSessionImpl session = mySessions.get(descriptor.getProcessHandler());
if (session != null) {
session.activateSession();
}
@@ -134,8 +132,8 @@ public class XDebuggerManagerImpl extends XDebuggerManager
}
@Override
- public void contentRemoved(RunContentDescriptor descriptor, @NotNull Executor executor) {
- if (executor.equals(DefaultDebugExecutor.getDebugExecutorInstance())) {
+ public void contentRemoved(@Nullable RunContentDescriptor descriptor, @NotNull Executor executor) {
+ if (descriptor != null && executor.equals(DefaultDebugExecutor.getDebugExecutorInstance())) {
mySessions.remove(descriptor.getProcessHandler());
mySessionData.remove(descriptor);
XDebugSessionTab tab = mySessionTabs.remove(descriptor);
@@ -169,11 +167,17 @@ public class XDebuggerManagerImpl extends XDebuggerManager
@Override
@NotNull
- public XDebugSession startSession(@NotNull final ProgramRunner runner,
- @NotNull final ExecutionEnvironment environment,
- @Nullable final RunContentDescriptor contentToReuse,
- @NotNull final XDebugProcessStarter processStarter) throws ExecutionException {
- return startSession(contentToReuse, processStarter, new XDebugSessionImpl(environment, runner, this));
+ public XDebugSession startSession(@NotNull ProgramRunner runner,
+ @NotNull ExecutionEnvironment environment,
+ @Nullable RunContentDescriptor contentToReuse,
+ @NotNull XDebugProcessStarter processStarter) throws ExecutionException {
+ return startSession(contentToReuse, processStarter, new XDebugSessionImpl(RunContentBuilder.fix(environment, runner), this));
+ }
+
+ @Override
+ @NotNull
+ public XDebugSession startSession(@NotNull ExecutionEnvironment environment, @NotNull XDebugProcessStarter processStarter) throws ExecutionException {
+ return startSession(environment.getContentToReuse(), processStarter, new XDebugSessionImpl(environment, this));
}
@Override
@@ -193,10 +197,12 @@ public class XDebuggerManagerImpl extends XDebuggerManager
@NotNull
@Override
- public XDebugSession startSessionAndShowTab(@NotNull String sessionName, final Icon icon, @Nullable RunContentDescriptor contentToReuse,
+ public XDebugSession startSessionAndShowTab(@NotNull String sessionName,
+ Icon icon,
+ @Nullable RunContentDescriptor contentToReuse,
boolean showToolWindowOnSuspendOnly,
@NotNull XDebugProcessStarter starter) throws ExecutionException {
- XDebugSessionImpl session = startSession(contentToReuse, starter, new XDebugSessionImpl(null, null, this, sessionName,
+ XDebugSessionImpl session = startSession(contentToReuse, starter, new XDebugSessionImpl(null, this, sessionName,
icon, showToolWindowOnSuspendOnly));
if (!showToolWindowOnSuspendOnly) {
session.showSessionTab();
@@ -206,8 +212,9 @@ public class XDebuggerManagerImpl extends XDebuggerManager
return session;
}
- private XDebugSessionImpl startSession(final RunContentDescriptor contentToReuse, final XDebugProcessStarter processStarter,
- final XDebugSessionImpl session) throws ExecutionException {
+ private XDebugSessionImpl startSession(@Nullable RunContentDescriptor contentToReuse,
+ @NotNull XDebugProcessStarter processStarter,
+ @NotNull XDebugSessionImpl session) throws ExecutionException {
XDebugProcess process = processStarter.start(session);
myProject.getMessageBus().syncPublisher(TOPIC).processStarted(process);
@@ -222,7 +229,7 @@ public class XDebuggerManagerImpl extends XDebuggerManager
((XDebugProcessConfiguratorStarter)processStarter).configure(oldSessionData);
}
- session.init(process, oldSessionData);
+ session.init(process, oldSessionData, contentToReuse);
mySessions.put(session.getDebugProcess().getProcessHandler(), session);