summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java87
1 files changed, 44 insertions, 43 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java
index 13336358620b..14077c698284 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerPanelsManager.java
@@ -15,11 +15,13 @@
*/
package com.intellij.debugger.ui;
-import com.intellij.debugger.*;
+import com.intellij.debugger.DebugEnvironment;
+import com.intellij.debugger.DebugUIEnvironment;
+import com.intellij.debugger.DebuggerManagerEx;
+import com.intellij.debugger.DefaultDebugUIEnvironment;
import com.intellij.debugger.engine.DebugProcessImpl;
import com.intellij.debugger.engine.JavaDebugProcess;
import com.intellij.debugger.impl.DebuggerContextImpl;
-import com.intellij.debugger.impl.DebuggerContextListener;
import com.intellij.debugger.impl.DebuggerSession;
import com.intellij.debugger.impl.DebuggerStateManager;
import com.intellij.debugger.ui.impl.MainWatchPanel;
@@ -31,19 +33,13 @@ import com.intellij.execution.configurations.RemoteConnection;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.executors.DefaultDebugExecutor;
import com.intellij.execution.runners.ExecutionEnvironment;
+import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.runners.ProgramRunner;
-import com.intellij.execution.ui.ExecutionConsole;
-import com.intellij.execution.ui.RunContentDescriptor;
-import com.intellij.execution.ui.RunContentListener;
-import com.intellij.execution.ui.RunContentManager;
-import com.intellij.openapi.Disposable;
+import com.intellij.execution.ui.*;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.editor.colors.EditorColorsListener;
import com.intellij.openapi.editor.colors.EditorColorsManager;
-import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Disposer;
import com.intellij.xdebugger.XDebugProcess;
import com.intellij.xdebugger.XDebugProcessStarter;
import com.intellij.xdebugger.XDebugSession;
@@ -96,21 +92,30 @@ public class DebuggerPanelsManager implements ProjectComponent {
}
@Nullable
+ @Deprecated
+ /**
+ * @deprecated to remove in IDEA 15
+ */
public RunContentDescriptor attachVirtualMachine(Executor executor,
- ProgramRunner runner,
- ExecutionEnvironment environment,
+ @NotNull ProgramRunner runner,
+ @NotNull ExecutionEnvironment environment,
RunProfileState state,
RunContentDescriptor reuseContent,
RemoteConnection remoteConnection,
boolean pollConnection) throws ExecutionException {
- return attachVirtualMachine(new DefaultDebugUIEnvironment(myProject,
- executor,
- runner,
- environment,
- state,
- reuseContent,
- remoteConnection,
- pollConnection));
+ return attachVirtualMachine(new ExecutionEnvironmentBuilder(environment)
+ .executor(executor)
+ .runner(runner)
+ .contentToReuse(reuseContent)
+ .build(), state, remoteConnection, pollConnection);
+ }
+
+ @Nullable
+ public RunContentDescriptor attachVirtualMachine(@NotNull ExecutionEnvironment environment,
+ RunProfileState state,
+ RemoteConnection remoteConnection,
+ boolean pollConnection) throws ExecutionException {
+ return attachVirtualMachine(new DefaultDebugUIEnvironment(environment, state, remoteConnection, pollConnection));
}
@Nullable
@@ -144,47 +149,43 @@ public class DebuggerPanelsManager implements ProjectComponent {
}
+ @Override
public void projectOpened() {
- final RunContentManager contentManager = myExecutionManager.getContentManager();
- LOG.assertTrue(contentManager != null, "Content manager is null");
-
- final RunContentListener myContentListener = new RunContentListener() {
- public void contentSelected(RunContentDescriptor descriptor) {
- DebuggerSession session = getSession(myProject, descriptor.getExecutionConsole());
-
- if (session != null) {
- getContextManager()
- .setState(session.getContextManager().getContext(), session.getState(), DebuggerSession.EVENT_CONTEXT, null);
- }
- else {
- getContextManager()
- .setState(DebuggerContextImpl.EMPTY_CONTEXT, DebuggerSession.STATE_DISPOSED, DebuggerSession.EVENT_CONTEXT, null);
+ myProject.getMessageBus().connect(myProject).subscribe(RunContentManager.TOPIC, new RunContentWithExecutorListener() {
+ @Override
+ public void contentSelected(@Nullable RunContentDescriptor descriptor, @NotNull Executor executor) {
+ if (executor == DefaultDebugExecutor.getDebugExecutorInstance()) {
+ DebuggerSession session = descriptor == null ? null : getSession(myProject, descriptor.getExecutionConsole());
+ if (session != null) {
+ getContextManager().setState(session.getContextManager().getContext(), session.getState(), DebuggerSession.EVENT_CONTEXT, null);
+ }
+ else {
+ getContextManager().setState(DebuggerContextImpl.EMPTY_CONTEXT, DebuggerSession.STATE_DISPOSED, DebuggerSession.EVENT_CONTEXT, null);
+ }
}
}
- public void contentRemoved(RunContentDescriptor descriptor) {
- }
- };
-
- contentManager.addRunContentListener(myContentListener, DefaultDebugExecutor.getDebugExecutorInstance());
- Disposer.register(myProject, new Disposable() {
- public void dispose() {
- contentManager.removeRunContentListener(myContentListener);
+ @Override
+ public void contentRemoved(@Nullable RunContentDescriptor descriptor, @NotNull Executor executor) {
}
});
}
+ @Override
public void projectClosed() {
}
+ @Override
@NotNull
public String getComponentName() {
return "DebuggerPanelsManager";
}
+ @Override
public void initComponent() {
}
+ @Override
public void disposeComponent() {
}
@@ -218,7 +219,7 @@ public class DebuggerPanelsManager implements ProjectComponent {
}
}
- private DebuggerSession getSession(Project project, ExecutionConsole console) {
+ private static DebuggerSession getSession(Project project, ExecutionConsole console) {
XDebugSession session = XDebuggerManager.getInstance(project).getDebugSession(console);
if (session != null) {
XDebugProcess process = session.getDebugProcess();