From 652ed324092efdc3208216d4753b18fb28e507fc Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 20 Jan 2011 16:09:57 +0300 Subject: [PATCH] xdebugger: allow to show additional actions in debug tool window --- .../com/intellij/xdebugger/XDebugProcess.java | 7 ++++ .../xdebugger/impl/ui/XDebugSessionTab.java | 34 ++++++++----------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/XDebugProcess.java b/platform/xdebugger-api/src/com/intellij/xdebugger/XDebugProcess.java index c9f20b7b408d..267a17a32c92 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/XDebugProcess.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/XDebugProcess.java @@ -21,6 +21,7 @@ import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.ui.RunnerLayoutUi; +import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.xdebugger.breakpoints.XBreakpointHandler; import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider; import com.intellij.xdebugger.stepping.XSmartStepIntoHandler; @@ -158,6 +159,12 @@ public abstract class XDebugProcess { public void registerAdditionalContent(@NotNull RunnerLayoutUi ui) { } + /** + * Override this method to provide additional actions in 'Debug' tool window + */ + public void registerAdditionalActions(@NotNull DefaultActionGroup leftToolbar, @NotNull DefaultActionGroup topToolbar) { + } + /** * @return message to show in Variables View when debugger isn't paused */ 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 0f6c24e823a9..3adb2a26a7fb 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 @@ -71,9 +71,6 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { myUi = RunnerLayoutUi.Factory.getInstance(project).create("Debug", "unknown!", sessionName, this); myUi.getDefaults().initTabDefaults(0, "Debug", null); - - ActionGroup topToolbar = getActionGroup(XDebuggerActions.TOOL_WINDOW_TOP_TOOLBAR_GROUP); - myUi.getOptions().setTopToolbar(topToolbar, ActionPlaces.DEBUGGER_TOOLBAR); } private static ActionGroup getActionGroup(final String id) { @@ -181,31 +178,35 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { return myRunContentDescriptor; } - DefaultActionGroup group = new DefaultActionGroup(); + DefaultActionGroup leftToolbar = new DefaultActionGroup(); final Executor executor = DefaultDebugExecutor.getDebugExecutorInstance(); if (runner != null && environment != null) { RestartAction restartAction = new RestartAction(executor, runner, myRunContentDescriptor.getProcessHandler(), XDebuggerUIConstants.DEBUG_AGAIN_ICON, myRunContentDescriptor, environment); - group.add(restartAction); + leftToolbar.add(restartAction); restartAction.registerShortcut(myUi.getComponent()); } - final ActionGroup leftToolbar = getActionGroup(XDebuggerActions.TOOL_WINDOW_LEFT_TOOLBAR_GROUP); - group.add(leftToolbar); + leftToolbar.addAll(getActionGroup(XDebuggerActions.TOOL_WINDOW_LEFT_TOOLBAR_GROUP)); //group.addSeparator(); //addAction(group, DebuggerActions.EXPORT_THREADS); - group.addSeparator(); + leftToolbar.addSeparator(); - group.add(myUi.getOptions().getLayoutActions()); + leftToolbar.add(myUi.getOptions().getLayoutActions()); - group.addSeparator(); + leftToolbar.addSeparator(); - group.add(PinToolwindowTabAction.getPinAction()); - group.add(new CloseAction(executor, myRunContentDescriptor, getProject())); - group.add(new ContextHelpAction(executor.getHelpId())); + leftToolbar.add(PinToolwindowTabAction.getPinAction()); + leftToolbar.add(new CloseAction(executor, myRunContentDescriptor, getProject())); + leftToolbar.add(new ContextHelpAction(executor.getHelpId())); - myUi.getOptions().setLeftToolbar(group, ActionPlaces.DEBUGGER_TOOLBAR); + DefaultActionGroup topToolbar = new DefaultActionGroup(); + topToolbar.addAll(getActionGroup(XDebuggerActions.TOOL_WINDOW_TOP_TOOLBAR_GROUP)); + + session.getDebugProcess().registerAdditionalActions(leftToolbar, topToolbar); + myUi.getOptions().setLeftToolbar(leftToolbar, ActionPlaces.DEBUGGER_TOOLBAR); + myUi.getOptions().setTopToolbar(topToolbar, ActionPlaces.DEBUGGER_TOOLBAR); if (environment != null) { final RunProfile runConfiguration = environment.getRunProfile(); @@ -218,11 +219,6 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { return myRunContentDescriptor; } - private static void addActionToGroup(final DefaultActionGroup group, final String actionId) { - AnAction action = ActionManager.getInstance().getAction(actionId); - if (action != null) group.add(action); - } - public RunnerLayoutUi getUi() { return myUi; }