diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 1e4a7b8ab733..5d88c61fb0ee 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -45,8 +45,6 @@ actionSystem.extendedKeyCode.disabled=false color.blindness.icon.filter=false ide.debugMode=false -ide.debugger.inline=true -ide.debugger.inline.description=Enables variables view in editor ide.debugMode.description=Record additional information to make bug reports more informative. ide.forcedShowTooltip=alt diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettingsManager.java b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettingsManager.java index 51cc2c3ee5d9..76ef27d310b3 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettingsManager.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettingsManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -31,6 +31,8 @@ public abstract class XDebuggerSettingsManager { int getValueLookupDelay(); boolean isShowLibraryStackFrames(); + + boolean isShowValuesInline(); } @NotNull diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UseInlineDebuggerAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UseInlineDebuggerAction.java index ab9bba4d37da..c23497db5ee9 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UseInlineDebuggerAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UseInlineDebuggerAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -16,27 +16,23 @@ package com.intellij.xdebugger.impl.actions; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.RegistryToggleAction; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.project.Project; +import com.intellij.openapi.actionSystem.ToggleAction; +import com.intellij.openapi.project.DumbAware; +import com.intellij.xdebugger.impl.XDebuggerUtilImpl; +import com.intellij.xdebugger.impl.settings.XDebuggerSettingManagerImpl; /** * @author Konstantin Bulenkov */ -public class UseInlineDebuggerAction extends RegistryToggleAction { - public UseInlineDebuggerAction() { - super("ide.debugger.inline"); +public class UseInlineDebuggerAction extends ToggleAction implements DumbAware { + @Override + public boolean isSelected(AnActionEvent e) { + return XDebuggerSettingManagerImpl.getInstanceImpl().getDataViewSettings().isShowValuesInline(); } @Override - public void doWhenDone(AnActionEvent e) { - Project project = e.getProject(); - if (project != null) { - final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); - if (editor != null) { - editor.getComponent().repaint(); - } - } + public void setSelected(AnActionEvent e, boolean state) { + XDebuggerSettingManagerImpl.getInstanceImpl().getDataViewSettings().setShowValuesInline(state); + XDebuggerUtilImpl.rebuildAllSessionsViews(e.getProject()); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java index 1b7085de122d..4691c15b5a61 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -23,7 +23,6 @@ import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.*; @@ -39,6 +38,7 @@ import com.intellij.xdebugger.impl.frame.XDebugView; import com.intellij.xdebugger.impl.frame.XVariablesView; import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl; import com.intellij.xdebugger.impl.ui.tree.nodes.XValueTextRendererImpl; +import com.intellij.xdebugger.settings.XDebuggerSettingsManager; import com.intellij.xdebugger.ui.DebuggerColors; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -58,7 +58,7 @@ public class XDebuggerEditorLinePainter extends EditorLinePainter { @Override public Collection getLineExtensions(@NotNull Project project, @NotNull VirtualFile file, int lineNumber) { - if (!Registry.is("ide.debugger.inline")) { + if (!XDebuggerSettingsManager.getInstance().getDataViewSettings().isShowValuesInline()) { return null; } 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 5318db670bcd..e10088deab18 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-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -27,7 +27,6 @@ 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"; @@ -60,7 +59,7 @@ public class DataViewsConfigurableUi { return getValueTooltipDelay() != settings.getValueLookupDelay() || sortAlphabeticallyCheckBox.isSelected() != settings.isSortValues() || enableAutoExpressionsCheckBox.isSelected() != settings.isAutoExpressions() || - myShowValuesInlineCheckBox.isSelected() != Registry.is(IDE_DEBUGGER_INLINE_KEY) || + myShowValuesInlineCheckBox.isSelected() != settings.isShowValuesInline() || myShowValueTooltipCheckBox.isSelected() != Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY) || myShowValueTooltipOnCheckBox.isSelected() != Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY); } @@ -69,7 +68,7 @@ public class DataViewsConfigurableUi { valueTooltipDelayTextField.setValue(settings.getValueLookupDelay()); sortAlphabeticallyCheckBox.setSelected(settings.isSortValues()); enableAutoExpressionsCheckBox.setSelected(settings.isAutoExpressions()); - myShowValuesInlineCheckBox.setSelected(Registry.is(IDE_DEBUGGER_INLINE_KEY)); + myShowValuesInlineCheckBox.setSelected(settings.isShowValuesInline()); myShowValueTooltipCheckBox.setSelected(Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_KEY)); myShowValueTooltipOnCheckBox.setSelected(Registry.is(DEBUGGER_VALUE_TOOLTIP_AUTO_SHOW_ON_SELECTION_KEY)); myTooltipLabel.setText(XDebuggerBundle.message("settings.tooltip.label", Registry.stringValue("ide.forcedShowTooltip"))); @@ -79,7 +78,7 @@ public class DataViewsConfigurableUi { settings.setValueLookupDelay(getValueTooltipDelay()); settings.setSortValues(sortAlphabeticallyCheckBox.isSelected()); settings.setAutoExpressions(enableAutoExpressionsCheckBox.isSelected()); - Registry.get(IDE_DEBUGGER_INLINE_KEY).setValue(myShowValuesInlineCheckBox.isSelected()); + settings.setShowValuesInline(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()); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerDataViewSettings.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerDataViewSettings.java index 64e5aa652feb..91a1fcd2b985 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerDataViewSettings.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerDataViewSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -32,6 +32,9 @@ public class XDebuggerDataViewSettings implements XDebuggerSettingsManager.DataV private boolean showLibraryStackFrames = true; + @Tag("show-values-inline") + private boolean showValuesInline = true; + @Override @Tag("sort-values") public boolean isSortValues() { @@ -68,4 +71,12 @@ public class XDebuggerDataViewSettings implements XDebuggerSettingsManager.DataV public void setShowLibraryStackFrames(boolean value) { showLibraryStackFrames = value; } + + public boolean isShowValuesInline() { + return showValuesInline; + } + + public void setShowValuesInline(boolean showValuesInline) { + this.showValuesInline = showValuesInline; + } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java index 9f3704f25946..db1b9d66eaee 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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,7 +15,6 @@ */ package com.intellij.xdebugger.impl.ui.tree.nodes; -import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.ObjectUtils; import com.intellij.util.SmartList; @@ -92,13 +91,14 @@ public abstract class XValueContainerNode(children.size()); } } - final InlineDebuggerHelper inlineHelper = getTree().getEditorsProvider().getInlineDebuggerHelper(); + boolean valuesInline = XDebuggerSettingsManager.getInstance().getDataViewSettings().isShowValuesInline(); + InlineDebuggerHelper inlineHelper = getTree().getEditorsProvider().getInlineDebuggerHelper(); for (int i = 0; i < children.size(); i++) { XValueNodeImpl node = new XValueNodeImpl(myTree, XValueContainerNode.this, children.getName(i), children.getValue(i)); myValueChildren.add(node); newChildren.add(node); - if (Registry.is("ide.debugger.inline") && inlineHelper.shouldEvaluateChildrenByDefault(node) && isUseGetChildrenHack(myTree)) { //todo[kb]: try to generify this dirty hack + if (valuesInline && inlineHelper.shouldEvaluateChildrenByDefault(node) && isUseGetChildrenHack(myTree)) { //todo[kb]: try to generify this dirty hack node.getChildren(); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodeImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodeImpl.java index d81ec228379e..20bcaa9c644b 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodeImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodeImpl.java @@ -19,7 +19,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ColoredTextContainer; @@ -37,6 +36,7 @@ import com.intellij.xdebugger.impl.ui.DebuggerUIUtil; import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants; import com.intellij.xdebugger.impl.ui.tree.ValueMarkup; import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree; +import com.intellij.xdebugger.settings.XDebuggerSettingsManager; import gnu.trove.TObjectLongHashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -110,7 +110,7 @@ public class XValueNodeImpl extends XValueContainerNode implements XValu setIcon(icon); myValuePresentation = valuePresentation; myRawValue = XValuePresentationUtil.computeValueText(valuePresentation); - if (Registry.is("ide.debugger.inline")) { + if (XDebuggerSettingsManager.getInstance().getDataViewSettings().isShowValuesInline()) { updateInlineDebuggerData(); } updateText();