variables settings actions reorganized

This commit is contained in:
Dennis Ushakov
2012-02-02 14:12:26 +04:00
parent 8a7f3cb7f0
commit 1a47dc662c
6 changed files with 84 additions and 21 deletions
@@ -137,6 +137,8 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
stepping.add(actionManager.getAction(DebuggerActions.POP_FRAME));
stepping.addSeparator();
stepping.add(actionManager.getAction(DebuggerActions.RUN_TO_CURSOR));
stepping.addSeparator();
stepping.add(actionManager.getAction(DebuggerActions.EVALUATE_EXPRESSION));
myUi.getOptions().setTopToolbar(stepping, ActionPlaces.DEBUGGER_TOOLBAR);
@@ -168,11 +170,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
XDebuggerUIConstants.VARIABLES_TAB_ICON, null);
vars.setCloseable(false);
vars.setAlertIcon(breakpointAlert);
final DefaultActionGroup varsGroup = new DefaultActionGroup();
addAction(varsGroup, DebuggerActions.EVALUATE_EXPRESSION);
varsGroup.add(new WatchLastMethodReturnValueAction());
varsGroup.add(new AutoVarsSwitchAction());
vars.setActions(varsGroup, ActionPlaces.DEBUGGER_TOOLBAR, myVariablesPanel.getTree());
myUi.addContent(vars, 0, PlaceInGrid.center, false);
// threads
@@ -301,14 +298,16 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
addAction(group, DebuggerActions.DUMP_THREADS);
group.addSeparator();
final AnAction[] layout = myUi.getOptions().getLayoutActionsList();
final AnAction layoutGroup = myUi.getOptions().getLayoutActions();
group.add(myUi.getOptions().getLayoutActions());
final AnAction[] commonSettings = myUi.getOptions().getSettingsActionsList();
final AnAction commonSettingsList = myUi.getOptions().getSettingsActions();
final DefaultActionGroup settings = new DefaultActionGroup("DebuggerSettings", true) {
@Override
public void update(AnActionEvent e) {
e.getPresentation().setText(ActionsBundle.message("group.XDebugger.settings.text"));
e.getPresentation().setIcon(layoutGroup.getTemplatePresentation().getIcon());
e.getPresentation().setIcon(commonSettingsList.getTemplatePresentation().getIcon());
}
@Override
@@ -316,12 +315,15 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
return true;
}
};
for (AnAction each : layout) {
for (AnAction each : commonSettings) {
settings.add(each);
}
if (layout.length > 0) {
if (commonSettings.length > 0) {
settings.addSeparator();
}
settings.add(new WatchLastMethodReturnValueAction());
settings.add(new AutoVarsSwitchAction());
settings.addSeparator();
addActionToGroup(settings, XDebuggerActions.AUTO_TOOLTIP);
group.add(settings);
@@ -563,7 +565,7 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
private final String myMyTextDisable;
public WatchLastMethodReturnValueAction() {
super("", DebuggerBundle.message("action.watch.method.return.value.description"), WATCH_RETURN_VALUES_ICON);
super("", DebuggerBundle.message("action.watch.method.return.value.description"), null);
myWatchesReturnValues = DebuggerSettings.getInstance().WATCH_RETURN_VALUES;
myTextEnable = DebuggerBundle.message("action.watches.method.return.value.enable");
myMyTextDisable = DebuggerBundle.message("action.watches.method.return.value.disable");
@@ -50,4 +50,6 @@ public interface LayoutViewOptions {
LayoutViewOptions setAdditionalFocusActions(ActionGroup group);
AnAction getSettingsActions();
AnAction[] getSettingsActionsList();
}
@@ -69,6 +69,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
QuickActionProvider, DockContainer.Dialog {
@NonNls public static final String LAYOUT = "Runner.Layout";
@NonNls public static final String SETTINGS = "XDebugger.Settings";
@NonNls public static final String VIEW_POPUP = "Runner.View.Popup";
@NonNls public static final String VIEW_TOOLBAR = "Runner.View.Toolbar";
@@ -690,6 +691,10 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
}
}
public ActionGroup getSettingsActions() {
return (ActionGroup)myActionManager.getAction(SETTINGS);
}
private static void moveFollowingTabs(int index, final JBRunnerTabs tabs) {
for (TabInfo info : tabs.getTabs()) {
final TabImpl tab = getTabFor(info);
@@ -293,6 +293,16 @@ public class RunnerLayoutUiImpl implements Disposable, RunnerLayoutUi, LayoutSta
return this;
}
@Override
public AnAction getSettingsActions() {
return myContentUI.getSettingsActions();
}
public AnAction[] getSettingsActionsList() {
final ActionGroup group = (ActionGroup)getSettingsActions();
return group.getChildren(null);
}
public Content[] getContents() {
Content[] contents = new Content[getContentManager().getContentCount()];
for (int i = 0; i < contents.length; i++) {
@@ -671,7 +671,7 @@
<reference ref="StepOut"/>
<reference ref="RunToCursor"/>
<separator/>
<reference ref="XDebugger.ToggleSortValues"/>
<reference ref="EvaluateExpression" />
</group>
<group id="XDebugger.ToolWindow.LeftToolbar">
@@ -726,12 +726,15 @@
<reference ref="XDebugger.AddToWatches"/>
</group>
<group id="RunnerLayoutActions">
<group id="Runner.Layout" icon="/debugger/restoreLayout.png" popup="true">
<action id="Runner.RestoreLayout" class="com.intellij.execution.ui.layout.actions.RestoreLayoutAction"/>
<action id="Runner.ToggleToolbarLayout" class="com.intellij.execution.ui.layout.actions.ToggleToolbarLayoutAction"/>
</group>
<group id="XDebugger.Settings" icon="/general/secondaryGroup.png" popup="true">
</group>
<group id="RunnerLayoutActions">
<group id="Runner.Layout">
<action id="Runner.RestoreLayout" class="com.intellij.execution.ui.layout.actions.RestoreLayoutAction"
icon="/debugger/restoreLayout.png"/>
</group>
<group id="Runner.View.Popup">
<action id="Runner.MinimizeView" class="com.intellij.execution.ui.layout.actions.MinimizeViewAction" icon="/actions/minimize.png"/>
@@ -30,10 +30,8 @@ import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.execution.ui.actions.CloseAction;
import com.intellij.execution.ui.layout.PlaceInGrid;
import com.intellij.ide.actions.ContextHelpAction;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionPlaces;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.idea.ActionsBundle;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.ui.content.Content;
@@ -46,6 +44,7 @@ import com.intellij.xdebugger.impl.frame.XDebugViewBase;
import com.intellij.xdebugger.impl.frame.XFramesView;
import com.intellij.xdebugger.impl.frame.XVariablesView;
import com.intellij.xdebugger.impl.frame.XWatchesView;
import com.intellij.xdebugger.impl.ui.tree.actions.SortValuesToggleAction;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -162,6 +161,31 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
leftToolbar.addSeparator();
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);
}
if (commonSettings.length > 0) {
settings.addSeparator();
}
settings.add(new ToggleSortValuesAction(commonSettings.length == 0));
leftToolbar.add(settings);
leftToolbar.addSeparator();
@@ -192,4 +216,21 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
public RunContentDescriptor getRunContentDescriptor() {
return myRunContentDescriptor;
}
private static class ToggleSortValuesAction extends SortValuesToggleAction {
private final boolean myShowIcon;
private ToggleSortValuesAction(boolean showIcon) {
copyFrom(ActionManager.getInstance().getAction(XDebuggerActions.TOGGLE_SORT_VALUES));
myShowIcon = showIcon;
}
@Override
public void update(AnActionEvent e) {
super.update(e);
if (!myShowIcon) {
e.getPresentation().setIcon(null);
}
}
}
}