diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java b/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java
index 6b5eadf8ff34..ca323d4ad528 100644
--- a/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java
+++ b/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java
@@ -37,7 +37,6 @@ public interface DebuggerActions extends XDebuggerActions {
@NonNls String REMOVE_WATCH = "Debugger.RemoveWatch";
@NonNls String NEW_WATCH = "Debugger.NewWatch";
@NonNls String EDIT_WATCH = "Debugger.EditWatch";
- @NonNls String MARK_OBJECT = "Debugger.MarkObject";
@NonNls String COPY_VALUE = "Debugger.CopyValue";
@NonNls String SET_VALUE = "Debugger.SetValue";
@NonNls String EDIT_FRAME_SOURCE = "Debugger.EditFrameSource";
diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/MarkObjectAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/JavaMarkObjectActionHandler.java
similarity index 86%
rename from java/debugger/impl/src/com/intellij/debugger/actions/MarkObjectAction.java
rename to java/debugger/impl/src/com/intellij/debugger/actions/JavaMarkObjectActionHandler.java
index 37b129cd385f..18e54211dc45 100644
--- a/java/debugger/impl/src/com/intellij/debugger/actions/MarkObjectAction.java
+++ b/java/debugger/impl/src/com/intellij/debugger/actions/JavaMarkObjectActionHandler.java
@@ -16,6 +16,7 @@
package com.intellij.debugger.actions;
import com.intellij.codeInsight.daemon.impl.HighlightInfoType;
+import com.intellij.debugger.engine.DebugProcess;
import com.intellij.debugger.engine.DebugProcessImpl;
import com.intellij.debugger.engine.DebuggerUtils;
import com.intellij.debugger.engine.events.DebuggerContextCommandImpl;
@@ -26,17 +27,18 @@ import com.intellij.debugger.ui.impl.watch.DebuggerTreeNodeImpl;
import com.intellij.debugger.ui.impl.watch.NodeDescriptorImpl;
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl;
import com.intellij.debugger.ui.tree.ValueDescriptor;
-import com.intellij.xdebugger.impl.ui.tree.ValueMarkup;
-import com.intellij.idea.ActionsBundle;
import com.intellij.openapi.actionSystem.AnActionEvent;
-import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.markup.TextAttributes;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.Ref;
import com.intellij.util.containers.HashMap;
+import com.intellij.xdebugger.impl.actions.MarkObjectActionHandler;
+import com.intellij.xdebugger.impl.ui.tree.ValueMarkup;
import com.sun.jdi.*;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -51,14 +53,13 @@ import java.util.Map;
* Class SetValueAction
* @author Jeka
*/
-public class MarkObjectAction extends DebuggerAction {
- private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.actions.MarkObjectAction");
+public class JavaMarkObjectActionHandler extends MarkObjectActionHandler {
+ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.actions.JavaMarkObjectActionHandler");
public static final long AUTO_MARKUP_REFERRING_OBJECTS_LIMIT = 100L; // todo: some reasonable limit
- private final String MARK_TEXT = ActionsBundle.message("action.Debugger.MarkObject.text");
- private final String UNMARK_TEXT = ActionsBundle.message("action.Debugger.MarkObject.unmark.text");
- public void actionPerformed(final AnActionEvent event) {
- final DebuggerTreeNodeImpl node = getSelectedNode(event.getDataContext());
+ @Override
+ public void perform(@NotNull Project project, AnActionEvent event) {
+ final DebuggerTreeNodeImpl node = DebuggerAction.getSelectedNode(event.getDataContext());
if (node == null) {
return;
}
@@ -233,24 +234,27 @@ public class MarkObjectAction extends DebuggerAction {
return builder.append("
").append(refType.name()).append(".").append(fieldName).append("").toString();
}
+ @Override
+ public boolean isEnabled(@NotNull Project project, AnActionEvent event) {
+ final DebuggerTreeNodeImpl node = DebuggerAction.getSelectedNode(event.getDataContext());
+ return node != null && node.getDescriptor() instanceof ValueDescriptor;
+ }
- public void update(AnActionEvent e) {
- boolean enable = false;
- String text = MARK_TEXT;
- final DebuggerTreeNodeImpl node = getSelectedNode(e.getDataContext());
- if (node != null) {
- final NodeDescriptorImpl descriptor = node.getDescriptor();
- enable = (descriptor instanceof ValueDescriptor);
- if (enable) {
- final ValueMarkup markup = ((ValueDescriptor)descriptor).getMarkup(node.getTree().getDebuggerContext().getDebugProcess());
- if (markup != null) { // already exists
- text = UNMARK_TEXT;
- }
- }
- }
- final Presentation presentation = e.getPresentation();
- presentation.setVisible(enable);
- presentation.setText(text);
+ @Override
+ public boolean isHidden(@NotNull Project project, AnActionEvent event) {
+ return DebuggerAction.getSelectedNode(event.getDataContext()) == null;
+ }
+
+ @Override
+ public boolean isMarked(@NotNull Project project, @NotNull AnActionEvent event) {
+ final DebuggerTreeNodeImpl node = DebuggerAction.getSelectedNode(event.getDataContext());
+ if (node == null) return false;
+
+ final NodeDescriptorImpl descriptor = node.getDescriptor();
+ if (!(descriptor instanceof ValueDescriptor)) return false;
+
+ DebugProcess debugProcess = node.getTree().getDebuggerContext().getDebugProcess();
+ return ((ValueDescriptor)descriptor).getMarkup(debugProcess) != null;
}
public static Color getAutoMarkupColor() {
diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/ObjectMarkupPropertiesDialog.java b/java/debugger/impl/src/com/intellij/debugger/actions/ObjectMarkupPropertiesDialog.java
index 15ef421bdea1..fe2ac9ee5bf5 100644
--- a/java/debugger/impl/src/com/intellij/debugger/actions/ObjectMarkupPropertiesDialog.java
+++ b/java/debugger/impl/src/com/intellij/debugger/actions/ObjectMarkupPropertiesDialog.java
@@ -17,7 +17,7 @@ package com.intellij.debugger.actions;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.ui.ex.MultiLineLabel;
-import com.intellij.xdebugger.impl.ui.tree.ValueMarkerPresentationDialog;
+import com.intellij.xdebugger.impl.ui.tree.ValueMarkerPresentationDialogBase;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -28,7 +28,7 @@ import java.awt.*;
* @author Eugene Zhuravlev
* Date: Feb 4, 2007
*/
-public class ObjectMarkupPropertiesDialog extends ValueMarkerPresentationDialog {
+public class ObjectMarkupPropertiesDialog extends ValueMarkerPresentationDialogBase {
@NonNls private static final String MARK_ALL_REFERENCED_VALUES_KEY = "debugger.mark.all.referenced.values";
private JCheckBox myCbMarkAdditionalFields;
private final boolean mySuggestAdditionalMarkup;
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java b/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java
index 76d5a6985672..71646e033b74 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java
@@ -29,8 +29,8 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.xdebugger.AbstractDebuggerSession;
import com.intellij.xdebugger.impl.DebuggerSupport;
-import com.intellij.xdebugger.impl.actions.DebuggerActionHandler;
-import com.intellij.xdebugger.impl.actions.DebuggerToggleActionHandler;
+import com.intellij.xdebugger.impl.actions.*;
+import com.intellij.xdebugger.impl.actions.MarkObjectActionHandler;
import com.intellij.xdebugger.impl.breakpoints.ui.AbstractBreakpointPanel;
import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider;
import com.intellij.xdebugger.impl.evaluate.quick.common.QuickEvaluateHandler;
@@ -63,6 +63,7 @@ public class JavaDebuggerSupport extends DebuggerSupport {
private final MuteBreakpointsActionHandler myMuteBreakpointsHandler = new MuteBreakpointsActionHandler();
private final DebuggerActionHandler mySmartStepIntoHandler = new SmartStepIntoActionHandler();
private final DebuggerActionHandler myAddToWatchedActionHandler = new AddToWatchActionHandler();
+ private JavaMarkObjectActionHandler myMarkObjectActionHandler = new JavaMarkObjectActionHandler();
@NotNull
public BreakpointPanelProvider> getBreakpointPanelProvider() {
@@ -150,6 +151,12 @@ public class JavaDebuggerSupport extends DebuggerSupport {
return myMuteBreakpointsHandler;
}
+ @NotNull
+ @Override
+ public MarkObjectActionHandler getMarkObjectHandler() {
+ return myMarkObjectActionHandler;
+ }
+
@Override
public AbstractDebuggerSession getCurrentSession(@NotNull Project project) {
final DebuggerContextImpl context = (DebuggerManagerEx.getInstanceEx(project)).getContext();
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java
index fbbcad3b909c..7dd324df7cfa 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java
@@ -19,7 +19,6 @@
*/
package com.intellij.debugger.ui.impl;
-import com.intellij.debugger.actions.DebuggerActions;
import com.intellij.debugger.impl.DebuggerSession;
import com.intellij.debugger.impl.DebuggerStateManager;
import com.intellij.debugger.ui.impl.watch.DebuggerTree;
@@ -30,6 +29,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy;
import com.intellij.ui.PopupHandler;
+import com.intellij.xdebugger.impl.actions.XDebuggerActions;
import javax.swing.*;
import java.awt.*;
@@ -68,7 +68,7 @@ public abstract class DebuggerTreePanel extends UpdatableDebuggerView implements
final Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts("ToggleBookmark");
final CustomShortcutSet shortcutSet = shortcuts.length > 0? new CustomShortcutSet(shortcuts) : new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_F11, 0));
- overrideShortcut(myTree, DebuggerActions.MARK_OBJECT, shortcutSet);
+ overrideShortcut(myTree, XDebuggerActions.MARK_OBJECT, shortcutSet);
}
protected abstract DebuggerTree createTreeView();
diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml
index f2e736bea908..78e3728bee67 100644
--- a/platform/platform-resources/src/idea/LangActions.xml
+++ b/platform/platform-resources/src/idea/LangActions.xml
@@ -672,6 +672,7 @@
icon="/debugger/muteBreakpoints.png"/>
+
@@ -699,12 +700,14 @@
+
@@ -717,6 +720,7 @@
+
@@ -727,6 +731,7 @@