diff options
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java')
-rw-r--r-- | platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java | 61 |
1 files changed, 28 insertions, 33 deletions
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 2ad50e1240f7..2273ab698768 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 @@ -21,6 +21,7 @@ import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.xdebugger.*; @@ -28,26 +29,23 @@ import com.intellij.xdebugger.evaluation.EvaluationMode; import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider; import com.intellij.xdebugger.evaluation.XDebuggerEvaluator; import com.intellij.xdebugger.impl.XDebugSessionImpl; +import com.intellij.xdebugger.impl.XDebuggerUtilImpl; import com.intellij.xdebugger.impl.actions.XDebuggerActions; import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl; import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager; import com.intellij.xdebugger.impl.ui.XDebuggerEditorBase; import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree; -import com.intellij.xdebugger.impl.ui.tree.XDebuggerTreeListener; import com.intellij.xdebugger.impl.ui.tree.XDebuggerTreePanel; import com.intellij.xdebugger.impl.ui.tree.nodes.EvaluatingExpressionRootNode; -import com.intellij.xdebugger.impl.ui.tree.nodes.RestorableStateNode; -import com.intellij.xdebugger.impl.ui.tree.nodes.XDebuggerTreeNode; -import com.intellij.xdebugger.impl.ui.tree.nodes.XValueContainerNode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import javax.swing.tree.TreeNode; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.util.List; /** * @author nik @@ -98,12 +96,6 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { mySwitchModeAction = new SwitchModeAction(); - new AnAction(){ - @Override - public void actionPerformed(AnActionEvent e) { - doOKAction(); - } - }.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK)), getRootPane(), myDisposable); new AnAction() { @Override public void actionPerformed(AnActionEvent e) { @@ -112,9 +104,14 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { }.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_DOWN_MASK)), getRootPane(), myDisposable); - myTreePanel.getTree().addTreeListener(new MyTreeListener()); + myTreePanel.getTree().expandNodesOnLoad(new Condition<TreeNode>() { + @Override + public boolean value(TreeNode node) { + return node.getParent() instanceof EvaluatingExpressionRootNode; + } + }); - EvaluationMode mode = XDebuggerSettingsManager.getInstance().getGeneralSettings().getEvaluationDialogMode(); + EvaluationMode mode = XDebuggerSettingsManager.getInstanceImpl().getGeneralSettings().getEvaluationDialogMode(); myIsCodeFragmentEvaluationSupported = evaluator.isCodeFragmentEvaluationSupported(); if (mode == EvaluationMode.CODE_FRAGMENT && !myIsCodeFragmentEvaluationSupported) { mode = EvaluationMode.EXPRESSION; @@ -131,6 +128,23 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { evaluate(); } + protected void createDefaultActions() { + super.createDefaultActions(); + myOKAction = new OkAction(){ + @Override + public void actionPerformed(ActionEvent e) { + super.actionPerformed(e); + if (myMode == EvaluationMode.EXPRESSION && ((e.getModifiers() & InputEvent.CTRL_MASK) != 0)) { + // add to watches + XExpression expression = myInputComponent.getInputEditor().getExpression(); + if (!XDebuggerUtilImpl.isEmptyExpression(expression)) { + ((XDebugSessionImpl)mySession).getSessionTab().getWatchesView().addWatchExpression(expression, -1, false); + } + } + } + }; + } + @NotNull @Override protected Action[] createActions() { @@ -171,7 +185,7 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { private void switchToMode(EvaluationMode mode, XExpression text) { if (myMode == mode) return; - XDebuggerSettingsManager.getInstance().getGeneralSettings().setEvaluationDialogMode(mode); + XDebuggerSettingsManager.getInstanceImpl().getGeneralSettings().setEvaluationDialogMode(mode); myMode = mode; @@ -227,25 +241,6 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { } } - private class MyTreeListener implements XDebuggerTreeListener { - @Override - public void nodeLoaded(@NotNull RestorableStateNode node, String name) { - if (node.getParent() instanceof EvaluatingExpressionRootNode) { - if (!node.isLeaf()) { - // cause children computing - node.getChildCount(); - } - } - } - - @Override - public void childrenLoaded(@NotNull XDebuggerTreeNode node, @NotNull List<XValueContainerNode<?>> children, boolean last) { - if (node.getParent() instanceof EvaluatingExpressionRootNode) { - myTreePanel.getTree().expandPath(node.getPath()); - } - } - } - @Override protected String getDimensionServiceKey() { return "#xdebugger.evaluate"; |