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