diff options
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.java | 87 |
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(); |