From a7712a63c2a2d600ccd73e3abccdb7396c713cd5 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Mon, 18 May 2015 13:59:28 +0300 Subject: [PATCH] IDEA-140303 Improve debugger settings popup wording --- .../debugger/engine/JavaDebugProcess.java | 5 +- .../src/messages/ActionsBundle.properties | 6 +- .../src/messages/XDebuggerBundle.properties | 3 + .../src/idea/LangActions.xml | 9 ++- .../settings/DataViewsConfigurableUi.form | 70 ++++++++++++++----- .../settings/DataViewsConfigurableUi.java | 34 ++++++++- .../xdebugger/impl/ui/XDebugSessionTab.java | 13 +--- .../tree/actions/SortValuesToggleAction.java | 12 +++- .../src/messages/DebuggerBundle.properties | 2 +- 9 files changed, 112 insertions(+), 42 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java index 36aff625f280..b65f977ede75 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java @@ -321,8 +321,9 @@ public class JavaDebugProcess extends XDebugProcess { leftToolbar.add(ActionManager.getInstance().getAction(DebuggerActions.DUMP_THREADS), beforeRunner); leftToolbar.add(Separator.getInstance(), beforeRunner); - settings.addAction(new AutoVarsSwitchAction(), Constraints.FIRST); - settings.addAction(new WatchLastMethodReturnValueAction(), Constraints.FIRST); + Constraints beforeSort = new Constraints(Anchor.BEFORE, "XDebugger.ToggleSortValues"); + settings.addAction(new WatchLastMethodReturnValueAction(), beforeSort); + settings.addAction(new AutoVarsSwitchAction(), beforeSort); } private static class AutoVarsSwitchAction extends ToggleAction { diff --git a/platform/platform-resources-en/src/messages/ActionsBundle.properties b/platform/platform-resources-en/src/messages/ActionsBundle.properties index 8afc312c8303..f453a681c7d1 100644 --- a/platform/platform-resources-en/src/messages/ActionsBundle.properties +++ b/platform/platform-resources-en/src/messages/ActionsBundle.properties @@ -982,11 +982,11 @@ action.XDebugger.NewWatch.text=New Watch... action.XDebugger.EditWatch.text=Edit... action.XDebugger.AutoTooltip.text=Value auto tooltip action.XDebugger.AutoTooltip.description=Toggles if value tooltip is shown automatically on mouse over -action.XDebugger.Inline.text=Show values in editor +action.XDebugger.Inline.text=Show Values Inline action.XDebugger.Inline.description=Show available debugger session values inside editor action.XDebugger.AutoTooltipOnSelection.text=Show value on selection change action.XDebugger.AutoTooltipOnSelection.description=Toggles if value tooltip is shown automatically on selection change in editor -action.XDebugger.ToggleSortValues.text=Sort values alphabetically +action.XDebugger.ToggleSortValues.text=Sort Values Alphabetically action.XDebugger.ToggleSortValues.description=Sort values alphabetically in debugger views group.XDebugger.settings.text=Settings @@ -1020,7 +1020,7 @@ action.Debugger.MarkObject.unmark.text=Unmark Object action.Debugger.MarkObject.description=Mark/unmark the object so that it can be visually distinguished in in debugger views action.Debugger.AddToWatch.text=Add to Watches action.Debugger.EvaluateInConsole.text=Evaluate in Console -action.Debugger.UnmuteOnStop.text=Unmute breakpoints on session finish +action.XDebugger.UnmuteOnStop.text=Unmute Breakpoints on Session Finish action.Debugger.AutoRenderer.text=Auto group.EditorPopupMenu.text=Editor Popup Menu group.EditorPopupMenu.description=Editor Popup Menu diff --git a/platform/platform-resources-en/src/messages/XDebuggerBundle.properties b/platform/platform-resources-en/src/messages/XDebuggerBundle.properties index 7a7d8c67f0d5..cfeb8209caa7 100644 --- a/platform/platform-resources-en/src/messages/XDebuggerBundle.properties +++ b/platform/platform-resources-en/src/messages/XDebuggerBundle.properties @@ -128,3 +128,6 @@ setting.focus.app.on.breakpoint.label=Focus application on breakpoint settings.show.window.label=Show &debug window on breakpoint showReferring.dialog.title=Referring Objects For {0} +settings.show.values.inline=Show values inline +settings.show.value.tooltip=Show value tooltip. +settings.show.tooltip.on.selection=Show value tooltip on code selection diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index 3f8edd619620..36671e305f56 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -794,10 +794,13 @@ - - - + + + + + + diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.form b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.form index a6e3f94f3bec..005e5aed54e3 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.form +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.form @@ -13,25 +13,9 @@ - - - - - - - - - - - - - - - - - + @@ -39,12 +23,62 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.java index 76645db3a3d3..1b220e800a00 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurableUi.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,17 +15,28 @@ */ package com.intellij.xdebugger.impl.settings; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtilRt; +import com.intellij.ui.IdeBorderFactory; +import com.intellij.ui.border.IdeaTitledBorder; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; public class DataViewsConfigurableUi { + public static final String IDE_DEBUGGER_INLINE_KEY = "ide.debugger.inline"; + public static final String DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY = "debugger.valueTooltipAutoShow"; + public static final String DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY = "debugger.valueTooltipAutoShowOnSelection"; + private JCheckBox enableAutoExpressionsCheckBox; private JFormattedTextField valueTooltipDelayTextField; private JPanel panel; private JCheckBox sortAlphabeticallyCheckBox; + private JPanel myEditorSettingsPanel; + private JCheckBox myShowValuesInlineCheckBox; + private JCheckBox myShowValueTooltipCheckBox; + private JCheckBox myShowValueTooltipOnCheckBox; public DataViewsConfigurableUi() { UIUtil.configureNumericFormattedTextField(valueTooltipDelayTextField); @@ -33,7 +44,8 @@ public class DataViewsConfigurableUi { private int getValueTooltipDelay() { Object value = valueTooltipDelayTextField.getValue(); - return value instanceof Number ? ((Number)value).intValue() : StringUtilRt.parseInt((String)value, XDebuggerDataViewSettings.DEFAULT_VALUE_TOOLTIP_DELAY); + return value instanceof Number ? ((Number)value).intValue() : + StringUtilRt.parseInt((String)value, XDebuggerDataViewSettings.DEFAULT_VALUE_TOOLTIP_DELAY); } @NotNull @@ -44,18 +56,34 @@ public class DataViewsConfigurableUi { public boolean isModified(@NotNull XDebuggerDataViewSettings settings) { return getValueTooltipDelay() != settings.getValueLookupDelay() || sortAlphabeticallyCheckBox.isSelected() != settings.isSortValues() || - enableAutoExpressionsCheckBox.isSelected() != settings.isAutoExpressions(); + enableAutoExpressionsCheckBox.isSelected() != settings.isAutoExpressions() || + myShowValuesInlineCheckBox.isSelected() != Registry.is(IDE_DEBUGGER_INLINE_KEY) || + myShowValuesInlineCheckBox.isSelected() != Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY) || + myShowValueTooltipOnCheckBox.isSelected() != Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY); } public void reset(@NotNull XDebuggerDataViewSettings settings) { valueTooltipDelayTextField.setValue(settings.getValueLookupDelay()); sortAlphabeticallyCheckBox.setSelected(settings.isSortValues()); enableAutoExpressionsCheckBox.setSelected(settings.isAutoExpressions()); + myShowValuesInlineCheckBox.setSelected(Registry.is(IDE_DEBUGGER_INLINE_KEY)); + myShowValueTooltipCheckBox.setSelected(Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY)); + myShowValueTooltipOnCheckBox.setSelected(Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY)); } public void apply(@NotNull XDebuggerDataViewSettings settings) { settings.setValueLookupDelay(getValueTooltipDelay()); settings.setSortValues(sortAlphabeticallyCheckBox.isSelected()); settings.setAutoExpressions(enableAutoExpressionsCheckBox.isSelected()); + Registry.get(IDE_DEBUGGER_INLINE_KEY).setValue(myShowValuesInlineCheckBox.isSelected()); + Registry.get(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY).setValue(myShowValueTooltipCheckBox.isSelected()); + Registry.get(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY).setValue(myShowValueTooltipOnCheckBox.isSelected()); + } + + private void createUIComponents() { + myEditorSettingsPanel = new JPanel(); + IdeaTitledBorder titledBorder = IdeBorderFactory.createTitledBorder("Editor", false); + myEditorSettingsPanel.setBorder(titledBorder); + titledBorder.acceptMinimumSize(myEditorSettingsPanel); } } \ No newline at end of file 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 349b64742446..b35b150c82f3 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 @@ -267,16 +267,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { final AnAction[] commonSettings = myUi.getOptions().getSettingsActionsList(); 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()) { - settings.add(new ToggleSortValuesAction(commonSettings.length == 0)); - } - + settings.addAll(commonSettings); leftToolbar.add(settings); leftToolbar.addSeparator(); @@ -316,7 +307,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { } @Override - public void update(AnActionEvent e) { + public void update(@NotNull AnActionEvent e) { super.update(e); if (!myShowIcon) { e.getPresentation().setIcon(null); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/SortValuesToggleAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/SortValuesToggleAction.java index e399dbd96eba..3adade0fedb2 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/SortValuesToggleAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/SortValuesToggleAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,13 +18,23 @@ package com.intellij.xdebugger.impl.ui.tree.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.ToggleAction; import com.intellij.openapi.project.DumbAware; +import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.impl.XDebuggerUtilImpl; import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager; +import org.jetbrains.annotations.NotNull; /** * @author nik */ public class SortValuesToggleAction extends ToggleAction implements DumbAware { + + @Override + public void update(@NotNull AnActionEvent e) { + super.update(e); + XDebugSession session = XDebugSession.DATA_KEY.getData(e.getDataContext()); + e.getPresentation().setEnabledAndVisible(session != null && !session.getDebugProcess().isValuesCustomSorted()); + } + @Override public boolean isSelected(AnActionEvent e) { return XDebuggerSettingsManager.getInstanceImpl().getDataViewSettings().isSortValues(); diff --git a/resources-en/src/messages/DebuggerBundle.properties b/resources-en/src/messages/DebuggerBundle.properties index 929447158cd4..dfc2a108eaea 100644 --- a/resources-en/src/messages/DebuggerBundle.properties +++ b/resources-en/src/messages/DebuggerBundle.properties @@ -441,7 +441,7 @@ action.show.watches.description=Shows or hides 'watches' pane action.show.watches.text.hide=Hide Watches action.show.watches.text.show=Show Watches action.watch.method.return.value.description=Enables watching last executed method return value -action.watches.method.return.value.enable=Watch method return values +action.watches.method.return.value.enable=Show Method Return Values action.watches.method.return.value.disable=Stop watching method return values action.watches.method.return.value.unavailable.reason=Feature is not supported by the target VM action.auto.variables.mode=Auto-Variables Mode