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 d07a2d94b4bb..68d2b1d547d3 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java @@ -16,7 +16,6 @@ package com.intellij.debugger.engine; import com.intellij.debugger.DebuggerBundle; -import com.intellij.debugger.DebuggerInvocationUtil; import com.intellij.debugger.actions.DebuggerActions; import com.intellij.debugger.engine.evaluation.EvaluationContext; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; @@ -41,7 +40,6 @@ import com.intellij.execution.ui.layout.PlaceInGrid; import com.intellij.icons.AllIcons; import com.intellij.idea.ActionsBundle; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -171,18 +169,6 @@ public class JavaDebugProcess extends XDebugProcess { DebuggerContextUtil.setStackFrame(javaSession.getContextManager(), ((JavaStackFrame)frame).getStackFrameProxy()); } } - - @Override - public void sessionStopped() { - if (DebuggerSettings.getInstance().UNMUTE_ON_STOP) { - ApplicationManager.getApplication().runReadAction(new Runnable() { - @Override - public void run() { - session.setBreakpointMuted(false); - } - }); - } - } }); } @@ -336,7 +322,6 @@ public class JavaDebugProcess extends XDebugProcess { }; settings.add(new WatchLastMethodReturnValueAction()); settings.add(new AutoVarsSwitchAction()); - settings.add(new UnmuteOnStopAction()); settings.addSeparator(); addActionToGroup(settings, XDebuggerActions.AUTO_TOOLTIP); diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSettings.java b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSettings.java index 294d9dea77e1..e25c895858a5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSettings.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSettings.java @@ -69,7 +69,6 @@ public class DebuggerSettings implements JDOMExternalizable, NamedComponent, Clo public volatile boolean WATCH_RETURN_VALUES = false; public volatile boolean AUTO_VARIABLES_MODE = false; public volatile boolean SHOW_LIBRARY_STACKFRAMES = true; - public volatile boolean UNMUTE_ON_STOP = false; private ClassFilter[] mySteppingFilters = ClassFilter.EMPTY_ARRAY; diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java index 93b0e3c7bfb3..7b4b22ee19be 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerSessionTab.java @@ -324,7 +324,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos } settings.add(new WatchLastMethodReturnValueAction()); settings.add(new AutoVarsSwitchAction()); - settings.add(new UnmuteOnStopAction()); settings.addSeparator(); addActionToGroup(settings, XDebuggerActions.AUTO_TOOLTIP); @@ -597,24 +596,4 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos } } } - - private class UnmuteOnStopAction extends ToggleAction { - private volatile boolean myUnmuteOnStop; - - private UnmuteOnStopAction() { - super(DebuggerBundle.message("action.unmute.on.stop.text"), DebuggerBundle.message("action.unmute.on.stop.text"), null); - myUnmuteOnStop = DebuggerSettings.getInstance().UNMUTE_ON_STOP; - } - - @Override - public boolean isSelected(AnActionEvent e) { - return myUnmuteOnStop; - } - - @Override - public void setSelected(AnActionEvent e, boolean state) { - myUnmuteOnStop = state; - DebuggerSettings.getInstance().UNMUTE_ON_STOP = state; - } - } } diff --git a/platform/platform-resources-en/src/messages/ActionsBundle.properties b/platform/platform-resources-en/src/messages/ActionsBundle.properties index 11b9297cf1c9..e5a5de80c9aa 100644 --- a/platform/platform-resources-en/src/messages/ActionsBundle.properties +++ b/platform/platform-resources-en/src/messages/ActionsBundle.properties @@ -961,6 +961,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.Debugger.AutoRenderer.text=Auto group.EditorPopupMenu.text=Editor Popup Menu group.EditorPopupMenu.description=Editor Popup Menu diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index feac7858dd60..af636ab5a3cf 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -757,7 +757,7 @@ - + diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java index de83c9e7eae4..95931e561f58 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java @@ -61,6 +61,7 @@ import com.intellij.xdebugger.frame.XValueMarkerProvider; import com.intellij.xdebugger.impl.breakpoints.*; import com.intellij.xdebugger.impl.evaluate.quick.common.ValueLookupManager; import com.intellij.xdebugger.impl.frame.XValueMarkers; +import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager; import com.intellij.xdebugger.impl.ui.XDebugSessionData; import com.intellij.xdebugger.impl.ui.XDebugSessionTab; import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants; @@ -837,6 +838,9 @@ public class XDebugSessionImpl implements XDebugSession { if (myValueMarkers != null) { myValueMarkers.clear(); } + if (XDebuggerSettingsManager.getInstance().getGeneralSettings().isUnmuteOnStop()) { + mySessionData.setBreakpointsMuted(false); + } myStopped = true; myDebuggerManager.removeSession(this); myDispatcher.getMulticaster().sessionStopped(); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/UnmuteOnStopAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UnmuteOnStopAction.java similarity index 59% rename from java/debugger/impl/src/com/intellij/debugger/engine/UnmuteOnStopAction.java rename to platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UnmuteOnStopAction.java index 310570d4ac73..79cef654c089 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/UnmuteOnStopAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/UnmuteOnStopAction.java @@ -13,32 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.debugger.engine; +package com.intellij.xdebugger.impl.actions; -import com.intellij.debugger.DebuggerBundle; -import com.intellij.debugger.settings.DebuggerSettings; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.ToggleAction; +import com.intellij.openapi.project.DumbAware; +import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager; /** -* @author egor -*/ -class UnmuteOnStopAction extends ToggleAction { - private volatile boolean myUnmuteOnStop; - - UnmuteOnStopAction() { - super(DebuggerBundle.message("action.unmute.on.stop.text"), DebuggerBundle.message("action.unmute.on.stop.text"), null); - myUnmuteOnStop = DebuggerSettings.getInstance().UNMUTE_ON_STOP; - } - + * @author egor + */ +public class UnmuteOnStopAction extends ToggleAction implements DumbAware { @Override public boolean isSelected(AnActionEvent e) { - return myUnmuteOnStop; + return XDebuggerSettingsManager.getInstance().getGeneralSettings().isUnmuteOnStop(); } @Override public void setSelected(AnActionEvent e, boolean state) { - myUnmuteOnStop = state; - DebuggerSettings.getInstance().UNMUTE_ON_STOP = state; + XDebuggerSettingsManager.getInstance().getGeneralSettings().setUnmuteOnStop(state); } -} +} \ No newline at end of file diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java index 6472fe62d6e3..2ad50e1240f7 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java @@ -114,7 +114,7 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { myTreePanel.getTree().addTreeListener(new MyTreeListener()); - EvaluationMode mode = XDebuggerSettingsManager.getInstance().getDataViewSettings().getEvaluationDialogMode(); + EvaluationMode mode = XDebuggerSettingsManager.getInstance().getGeneralSettings().getEvaluationDialogMode(); myIsCodeFragmentEvaluationSupported = evaluator.isCodeFragmentEvaluationSupported(); if (mode == EvaluationMode.CODE_FRAGMENT && !myIsCodeFragmentEvaluationSupported) { mode = EvaluationMode.EXPRESSION; @@ -171,7 +171,7 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { private void switchToMode(EvaluationMode mode, XExpression text) { if (myMode == mode) return; - XDebuggerSettingsManager.getInstance().getDataViewSettings().setEvaluationDialogMode(mode); + XDebuggerSettingsManager.getInstance().getGeneralSettings().setEvaluationDialogMode(mode); myMode = mode; 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 8dced66e6125..bff7c531119d 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 @@ -24,7 +24,6 @@ import com.intellij.xdebugger.evaluation.EvaluationMode; @Tag("data-views") public class XDebuggerDataViewSettings { private boolean mySortValues; - private EvaluationMode myEvaluationDialogMode = EvaluationMode.EXPRESSION; @Tag("sort-values") public boolean isSortValues() { @@ -34,13 +33,4 @@ public class XDebuggerDataViewSettings { public void setSortValues(boolean sortValues) { mySortValues = sortValues; } - - @Tag("evaluation-dialog-mode") - public EvaluationMode getEvaluationDialogMode() { - return myEvaluationDialogMode; - } - - public void setEvaluationDialogMode(EvaluationMode evaluationDialogMode) { - myEvaluationDialogMode = evaluationDialogMode; - } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerGeneralSettings.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerGeneralSettings.java new file mode 100644 index 000000000000..1f89b1445fd1 --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerGeneralSettings.java @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.impl.settings; + +import com.intellij.util.xmlb.annotations.Tag; +import com.intellij.xdebugger.evaluation.EvaluationMode; + +/** + * @author egor + */ +@Tag("general") +public class XDebuggerGeneralSettings { + private EvaluationMode myEvaluationDialogMode = EvaluationMode.EXPRESSION; + private boolean myUnmuteOnStop = false; + + @Tag("evaluation-dialog-mode") + public EvaluationMode getEvaluationDialogMode() { + return myEvaluationDialogMode; + } + + public void setEvaluationDialogMode(EvaluationMode evaluationDialogMode) { + myEvaluationDialogMode = evaluationDialogMode; + } + + @Tag("unmute-on-stop") + public boolean isUnmuteOnStop() { + return myUnmuteOnStop; + } + + public void setUnmuteOnStop(boolean unmuteOnStop) { + myUnmuteOnStop = unmuteOnStop; + } +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java index 5e7a17561c11..ae2dcbc4cca1 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java @@ -45,6 +45,7 @@ public class XDebuggerSettingsManager implements PersistentStateComponent> mySettingsById; private Map, XDebuggerSettings> mySettingsByClass; private XDebuggerDataViewSettings myDataViewSettings = new XDebuggerDataViewSettings(); + private XDebuggerGeneralSettings myGeneralSettings = new XDebuggerGeneralSettings(); public static XDebuggerSettingsManager getInstance() { return ServiceManager.getService(XDebuggerSettingsManager.class); @@ -53,6 +54,7 @@ public class XDebuggerSettingsManager implements PersistentStateComponent settings : getSettingsList()) { SpecificSettingsState state = new SpecificSettingsState(); state.setId(settings.getId()); @@ -71,8 +73,13 @@ public class XDebuggerSettingsManager implements PersistentStateComponent settings = findSettings(settingsState.getId()); if (settings != null) { @@ -106,6 +113,7 @@ public class XDebuggerSettingsManager implements PersistentStateComponent mySpecificStates = new ArrayList(); private XDebuggerDataViewSettings myDataViewSettings = new XDebuggerDataViewSettings(); + private XDebuggerGeneralSettings myGeneralSettings = new XDebuggerGeneralSettings(); @Tag("debuggers") @AbstractCollection(surroundWithTag = false) @@ -125,6 +133,15 @@ public class XDebuggerSettingsManager implements PersistentStateComponent