diff options
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java')
-rw-r--r-- | platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java | 62 |
1 files changed, 24 insertions, 38 deletions
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java index 1a4505f6d85b..881ed56bad3d 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java @@ -20,8 +20,8 @@ import com.intellij.execution.Executor; import com.intellij.execution.executors.DefaultDebugExecutor; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.RunContentBuilder; -import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.ui.RunContentDescriptor; +import com.intellij.execution.ui.RunnerLayoutUi; import com.intellij.execution.ui.actions.CloseAction; import com.intellij.execution.ui.layout.PlaceInGrid; import com.intellij.execution.ui.layout.impl.ViewImpl; @@ -83,6 +83,11 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { return new XDebugSessionTab(session, icon, environment); } + @NotNull + public RunnerLayoutUi getUi() { + return myUi; + } + private XDebugSessionTab(@NotNull XDebugSessionImpl session, @Nullable Icon icon, @Nullable ExecutionEnvironment environment) { @@ -95,7 +100,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { myUi.addContent(createWatchesContent(session), 0, PlaceInGrid.right, false); for (XDebugView view : myViews) { - Disposer.register(this, view); + Disposer.register(myRunContentDescriptor, view); } attachToSession(session); @@ -115,20 +120,19 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { } } } - }, this); + }, myRunContentDescriptor); rebuildViews(); } private void setSession(@NotNull XDebugSessionImpl session, @Nullable ExecutionEnvironment environment, @Nullable Icon icon) { - if (environment != null) { - setEnvironment(environment); - } - + myEnvironment = environment; mySession = session; mySessionData = session.getSessionData(); myConsole = session.getConsoleView(); myRunContentDescriptor = new RunContentDescriptor(myConsole, session.getDebugProcess().getProcessHandler(), myUi.getComponent(), session.getSessionName(), icon); + Disposer.register(myRunContentDescriptor, this); + Disposer.register(myProject, myRunContentDescriptor); } @Nullable @@ -180,7 +184,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { @NotNull private Content createFramesContent() { - XFramesView framesView = new XFramesView(getProject()); + XFramesView framesView = new XFramesView(myProject); myViews.add(framesView); Content framesContent = myUi.createContent(DebuggerContentInfo.FRAME_CONTENT, framesView.getMainPanel(), XDebuggerBundle.message("debugger.session.tab.frames.title"), AllIcons.Debugger.Frame, null); @@ -188,12 +192,8 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { return framesContent; } - public ExecutionConsole getConsole() { - return myConsole; - } - public void rebuildViews() { - AppUIUtil.invokeLaterIfProjectAlive(getProject(), new Runnable() { + AppUIUtil.invokeLaterIfProjectAlive(myProject, new Runnable() { @Override public void run() { for (XDebugView view : myViews) { @@ -209,7 +209,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { private void attachToSession(@NotNull XDebugSessionImpl session) { for (XDebugView view : myViews) { - session.addSessionListener(new XDebugViewSessionListener(view, session), this); + session.addSessionListener(new XDebugViewSessionListener(view), myRunContentDescriptor); } XDebugTabLayouter layouter = session.getDebugProcess().createTabLayouter(); @@ -225,8 +225,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { DefaultActionGroup leftToolbar = new DefaultActionGroup(); final Executor debugExecutor = DefaultDebugExecutor.getDebugExecutorInstance(); - ExecutionEnvironment environment = getEnvironment(); - if (environment != null) { + if (myEnvironment != null) { leftToolbar.add(ActionManager.getInstance().getAction(IdeActions.ACTION_RERUN)); List<AnAction> additionalRestartActions = session.getRestartActions(); if (!additionalRestartActions.isEmpty()) { @@ -247,24 +246,12 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { leftToolbar.add(myUi.getOptions().getLayoutActions()); final AnAction[] commonSettings = myUi.getOptions().getSettingsActionsList(); - final AnAction commonSettingsList = myUi.getOptions().getSettingsActions(); - - final DefaultActionGroup settings = new DefaultActionGroup("DebuggerSettings", commonSettings.length > 0) { - @Override - public void update(AnActionEvent e) { - e.getPresentation().setText(ActionsBundle.message("group.XDebugger.settings.text")); - e.getPresentation().setIcon(commonSettingsList.getTemplatePresentation().getIcon()); - } - - @Override - public boolean isDumbAware() { - return true; - } - }; - for (AnAction each : commonSettings) { - settings.add(each); - } + DefaultActionGroup settings = new DefaultActionGroup(ActionsBundle.message("group.XDebugger.settings.text"), true); + settings.getTemplatePresentation().setIcon(myUi.getOptions().getSettingsActions().getTemplatePresentation().getIcon()); if (commonSettings.length > 0) { + for (AnAction each : commonSettings) { + settings.add(each); + } settings.addSeparator(); } if (!session.getDebugProcess().isValuesCustomSorted()) { @@ -276,18 +263,18 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { leftToolbar.addSeparator(); leftToolbar.add(PinToolwindowTabAction.getPinAction()); - leftToolbar.add(new CloseAction(environment != null ? environment.getExecutor() : debugExecutor, myRunContentDescriptor, getProject())); + leftToolbar.add(new CloseAction(myEnvironment != null ? myEnvironment.getExecutor() : debugExecutor, myRunContentDescriptor, myProject)); leftToolbar.add(new ContextHelpAction(debugExecutor.getHelpId())); DefaultActionGroup topToolbar = new DefaultActionGroup(); topToolbar.addAll(getCustomizedActionGroup(XDebuggerActions.TOOL_WINDOW_TOP_TOOLBAR_GROUP)); - session.getDebugProcess().registerAdditionalActions(leftToolbar, topToolbar); + session.getDebugProcess().registerAdditionalActions(leftToolbar, topToolbar, settings); myUi.getOptions().setLeftToolbar(leftToolbar, ActionPlaces.DEBUGGER_TOOLBAR); myUi.getOptions().setTopToolbar(topToolbar, ActionPlaces.DEBUGGER_TOOLBAR); - if (environment != null) { - initLogConsoles(environment.getRunProfile(), myRunContentDescriptor.getProcessHandler(), myConsole); + if (myEnvironment != null) { + initLogConsoles(myEnvironment.getRunProfile(), myRunContentDescriptor, myConsole); } } @@ -296,7 +283,6 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { mySession = null; } - @Override @Nullable public RunContentDescriptor getRunContentDescriptor() { return myRunContentDescriptor; |