summaryrefslogtreecommitdiff
path: root/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui
diff options
context:
space:
mode:
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui')
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java12
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/ExecutionPointHighlighter.java10
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java2
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java9
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerMultilineEditor.java1
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java5
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java7
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XAddToWatchesAction.java4
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java4
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java7
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodePresentationConfigurator.java10
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValuePresentationUtil.java24
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueTextRendererImpl.java10
13 files changed, 72 insertions, 33 deletions
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java
index 0cca39833e54..d9a1fdbcf0af 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/DebuggerUIUtil.java
@@ -19,6 +19,8 @@ import com.intellij.codeInsight.hint.HintUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.LogicalPosition;
+import com.intellij.openapi.editor.colors.EditorColorsScheme;
+import com.intellij.openapi.editor.colors.EditorColorsUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.*;
import com.intellij.openapi.util.Computable;
@@ -261,6 +263,16 @@ public class DebuggerUIUtil {
return balloon;
}
+ @NotNull
+ public static EditorColorsScheme getColorScheme() {
+ return EditorColorsUtil.getGlobalOrDefaultColorScheme();
+ }
+
+ @NotNull
+ public static EditorColorsScheme getColorScheme(@Nullable JComponent component) {
+ return EditorColorsUtil.getColorSchemeForComponent(component);
+ }
+
private static class FullValueEvaluationCallbackImpl implements XFullValueEvaluator.XFullValueEvaluationCallback {
private final AtomicBoolean myObsolete = new AtomicBoolean(false);
private final EditorTextField myTextArea;
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/ExecutionPointHighlighter.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/ExecutionPointHighlighter.java
index 9fed59c966b0..0065a2843aac 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/ExecutionPointHighlighter.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/ExecutionPointHighlighter.java
@@ -65,6 +65,7 @@ public class ExecutionPointHighlighter {
mySourcePosition = position;
+ clearDescriptor();
myOpenFileDescriptor = XSourcePositionImpl.createOpenFileDescriptor(myProject, position);
//see IDEA-125645 and IDEA-63459
//myOpenFileDescriptor.setUseCurrentWindow(true);
@@ -84,13 +85,20 @@ public class ExecutionPointHighlighter {
updateRequested.set(false);
removeHighlighter();
- myOpenFileDescriptor = null;
+ clearDescriptor();
myEditor = null;
myGutterIconRenderer = null;
}
});
}
+ private void clearDescriptor() {
+ if (myOpenFileDescriptor != null) {
+ myOpenFileDescriptor.dispose();
+ myOpenFileDescriptor = null;
+ }
+ }
+
public void navigateTo() {
if (myOpenFileDescriptor != null) {
myOpenFileDescriptor.navigateInEditor(myProject, true);
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java
index 16a5a2ed96f8..0b0145948ecd 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java
@@ -46,6 +46,8 @@ public final class TextViewer extends EditorTextField {
editor.setEmbeddedIntoDialogWrapper(myEmbeddedIntoDialogWrapper);
editor.getComponent().setPreferredSize(null);
editor.getSettings().setUseSoftWraps(myUseSoftWraps);
+
+ editor.setColorsScheme(DebuggerUIUtil.getColorScheme());
return editor;
}
} \ No newline at end of file
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java
index ef0b72008cf7..2e5f8a337385 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java
@@ -168,7 +168,8 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
}
DefaultActionGroup leftToolbar = new DefaultActionGroup();
- final Executor executor = DefaultDebugExecutor.getDebugExecutorInstance();
+ final Executor debugExecutor = DefaultDebugExecutor.getDebugExecutorInstance();
+ final Executor executor = environment != null ? environment.getExecutor() : debugExecutor;
if (runner != null && environment != null) {
RestartAction restartAction = new RestartAction(executor, runner, myRunContentDescriptor, environment);
leftToolbar.add(restartAction);
@@ -222,7 +223,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
leftToolbar.add(PinToolwindowTabAction.getPinAction());
leftToolbar.add(new CloseAction(executor, myRunContentDescriptor, getProject()));
- leftToolbar.add(new ContextHelpAction(executor.getHelpId()));
+ leftToolbar.add(new ContextHelpAction(debugExecutor.getHelpId()));
DefaultActionGroup topToolbar = new DefaultActionGroup();
topToolbar.addAll(getCustomizedActionGroup(XDebuggerActions.TOOL_WINDOW_TOP_TOOLBAR_GROUP));
@@ -237,6 +238,10 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
initLogConsoles(runConfiguration, myRunContentDescriptor.getProcessHandler(), myConsole);
}
+ final DefaultActionGroup focus = new DefaultActionGroup();
+ focus.add(ActionManager.getInstance().getAction(XDebuggerActions.FOCUS_ON_BREAKPOINT));
+ myUi.getOptions().setAdditionalFocusActions(focus);
+
rebuildViews();
}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerMultilineEditor.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerMultilineEditor.java
index 0c41a5d1015b..aa3445b4b421 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerMultilineEditor.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerMultilineEditor.java
@@ -56,6 +56,7 @@ public class XDebuggerMultilineEditor extends XDebuggerEditorBase {
return false;
}
};
+ myEditorTextField.setFontInheritedFromLAF(false);
}
@Override
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java
index 3db287f84210..629385c9ad20 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java
@@ -69,14 +69,13 @@ public abstract class TreeInplaceEditor implements AWTEventListener {
if (!isShown()) {
return;
}
+ myInplaceEditorComponent = null;
onHidden();
for (Runnable action : myRemoveActions) {
action.run();
}
myRemoveActions.clear();
- myInplaceEditorComponent = null;
-
final JTree tree = getTree();
tree.repaint();
tree.requestFocus();
@@ -172,7 +171,7 @@ public abstract class TreeInplaceEditor implements AWTEventListener {
@Override
public void run() {
tree.removeHierarchyListener(hierarchyListener);
- tree.addComponentListener(componentListener);
+ tree.removeComponentListener(componentListener);
rootPane.removeComponentListener(componentListener);
}
});
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java
index 3b3a481f9870..afb22607d5d6 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java
@@ -27,6 +27,7 @@ import com.intellij.ui.PopupHandler;
import com.intellij.ui.TreeSpeedSearch;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.Convertor;
+import com.intellij.util.containers.TransferToEDTQueue;
import com.intellij.util.ui.TextTransferable;
import com.intellij.xdebugger.XSourcePosition;
import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider;
@@ -56,6 +57,8 @@ import java.util.List;
* @author nik
*/
public class XDebuggerTree extends DnDAwareTree implements DataProvider, Disposable {
+ private final TransferToEDTQueue<Runnable> myLaterInvocator = TransferToEDTQueue.createRunnableMerger("XDebuggerTree later invocator", 100);
+
private static final DataKey<XDebuggerTree> XDEBUGGER_TREE_KEY = DataKey.create("xdebugger.tree");
private static final Convertor<TreePath, String> SPEED_SEARCH_CONVERTER = new Convertor<TreePath, String>() {
@Override
@@ -324,4 +327,8 @@ public class XDebuggerTree extends DnDAwareTree implements DataProvider, Disposa
public static XDebuggerTree getTree(DataContext context) {
return XDEBUGGER_TREE_KEY.getData(context);
}
+
+ public TransferToEDTQueue<Runnable> getLaterInvocator() {
+ return myLaterInvocator;
+ }
}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XAddToWatchesAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XAddToWatchesAction.java
index c4bb274400ea..66f22bbfd4f1 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XAddToWatchesAction.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XAddToWatchesAction.java
@@ -55,9 +55,9 @@ class XAddToWatchesAction extends XDebuggerTreeActionBase {
if (view == null && project != null) {
XDebugSession session = XDebuggerManager.getInstance(project).getCurrentSession();
if (session != null) {
- return ((XDebugSessionImpl)session).getSessionTab().getWatchesView();
+ view = ((XDebugSessionImpl)session).getSessionTab().getWatchesView();
}
}
- return null;
+ return view;
}
} \ No newline at end of file
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java
index dccd5fd4f3f2..e01d0ad7ce79 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java
@@ -189,4 +189,8 @@ public abstract class XDebuggerTreeNode implements TreeNode, TreeSpeedSearch.Pat
component.append(link.getLinkText(), link.getTextAttributes(), link);
}
}
+
+ void invokeNodeUpdate(Runnable runnable) {
+ myTree.getLaterInvocator().offer(runnable);
+ }
}
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 a7059a4a10e0..38d2547831fe 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
@@ -22,7 +22,6 @@ import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.SortedList;
import com.intellij.xdebugger.frame.*;
import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager;
-import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree;
import org.jetbrains.annotations.NotNull;
@@ -75,7 +74,7 @@ public abstract class XValueContainerNode<ValueContainer extends XValueContainer
@Override
public void addChildren(@NotNull final XValueChildrenList children, final boolean last) {
- DebuggerUIUtil.invokeLater(new Runnable() {
+ invokeNodeUpdate(new Runnable() {
@Override
public void run() {
if (myValueChildren == null) {
@@ -125,7 +124,7 @@ public abstract class XValueContainerNode<ValueContainer extends XValueContainer
@Override
public void tooManyChildren(final int remaining) {
- DebuggerUIUtil.invokeLater(new Runnable() {
+ invokeNodeUpdate(new Runnable() {
@Override
public void run() {
setTemporaryMessageNode(MessageTreeNode.createEllipsisNode(myTree, XValueContainerNode.this, remaining));
@@ -162,7 +161,7 @@ public abstract class XValueContainerNode<ValueContainer extends XValueContainer
@Override
public void setMessage(@NotNull final String message,
final Icon icon, @NotNull final SimpleTextAttributes attributes, @Nullable final XDebuggerTreeNodeHyperlink link) {
- DebuggerUIUtil.invokeLater(new Runnable() {
+ invokeNodeUpdate(new Runnable() {
@Override
public void run() {
setMessageNodes(MessageTreeNode.createMessages(myTree, XValueContainerNode.this, message, link,
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodePresentationConfigurator.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodePresentationConfigurator.java
index 6bc3e56e0934..536822734d86 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodePresentationConfigurator.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueNodePresentationConfigurator.java
@@ -94,12 +94,18 @@ public final class XValueNodePresentationConfigurator {
node.applyPresentation(icon, presentation, hasChildren);
}
else {
- application.invokeLater(new Runnable() {
+ Runnable updater = new Runnable() {
@Override
public void run() {
node.applyPresentation(icon, presentation, hasChildren);
}
- });
+ };
+ if (node instanceof XDebuggerTreeNode) {
+ ((XDebuggerTreeNode)node).invokeNodeUpdate(updater);
+ }
+ else {
+ application.invokeLater(updater);
+ }
}
}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValuePresentationUtil.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValuePresentationUtil.java
index 188b20d27da4..5f202d8de278 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValuePresentationUtil.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValuePresentationUtil.java
@@ -16,16 +16,13 @@
package com.intellij.xdebugger.impl.ui.tree.nodes;
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors;
-import com.intellij.openapi.editor.colors.EditorColorsManager;
-import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.markup.TextAttributes;
-import com.intellij.ui.ColorUtil;
import com.intellij.ui.ColoredTextContainer;
import com.intellij.ui.JBColor;
import com.intellij.ui.SimpleTextAttributes;
-import com.intellij.util.ui.UIUtil;
import com.intellij.xdebugger.frame.presentation.XValuePresentation;
+import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -49,7 +46,7 @@ public class XValuePresentationUtil {
lastOffset = i + 1;
if (escapeAttributes == null) {
- TextAttributes fromHighlighter = getColorScheme().getAttributes(DefaultLanguageHighlighterColors.VALID_STRING_ESCAPE);
+ TextAttributes fromHighlighter = DebuggerUIUtil.getColorScheme().getAttributes(DefaultLanguageHighlighterColors.VALID_STRING_ESCAPE);
if (fromHighlighter != null) {
escapeAttributes = SimpleTextAttributes.fromTextAttributes(fromHighlighter);
}
@@ -123,6 +120,11 @@ public class XValuePresentationUtil {
}
@Override
+ public void renderError(@NotNull String error) {
+ myBuilder.append(error);
+ }
+
+ @Override
public void renderSpecialSymbol(@NotNull String symbol) {
myBuilder.append(symbol);
}
@@ -131,16 +133,4 @@ public class XValuePresentationUtil {
return myBuilder.toString();
}
}
-
- @NotNull
- public static EditorColorsScheme getColorScheme() {
- EditorColorsScheme globalScheme = EditorColorsManager.getInstance().getGlobalScheme();
- if (UIUtil.isUnderDarcula() != ColorUtil.isDark(globalScheme.getDefaultBackground())) {
- EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME);
- if (scheme != null) {
- return scheme;
- }
- }
- return globalScheme;
- }
}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueTextRendererImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueTextRendererImpl.java
index 90fd00268724..e8b8616e6b69 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueTextRendererImpl.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueTextRendererImpl.java
@@ -20,6 +20,7 @@ import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.ui.ColoredTextContainer;
import com.intellij.ui.SimpleTextAttributes;
+import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -40,14 +41,14 @@ class XValueTextRendererImpl extends XValueTextRendererBase {
@Override
protected void renderRawValue(@NotNull String value, @NotNull TextAttributesKey key) {
- TextAttributes textAttributes = XValuePresentationUtil.getColorScheme().getAttributes(key);
+ TextAttributes textAttributes = DebuggerUIUtil.getColorScheme().getAttributes(key);
SimpleTextAttributes attributes = SimpleTextAttributes.fromTextAttributes(textAttributes);
myText.append(value, attributes);
}
@Override
public void renderStringValue(@NotNull String value, @Nullable String additionalSpecialCharsToHighlight, int maxLength) {
- TextAttributes textAttributes = XValuePresentationUtil.getColorScheme().getAttributes(DefaultLanguageHighlighterColors.STRING);
+ TextAttributes textAttributes = DebuggerUIUtil.getColorScheme().getAttributes(DefaultLanguageHighlighterColors.STRING);
SimpleTextAttributes attributes = SimpleTextAttributes.fromTextAttributes(textAttributes);
myText.append("\"", attributes);
XValuePresentationUtil.renderValue(value, myText, attributes, maxLength, additionalSpecialCharsToHighlight);
@@ -60,6 +61,11 @@ class XValueTextRendererImpl extends XValueTextRendererBase {
}
@Override
+ public void renderError(@NotNull String error) {
+ myText.append(error, SimpleTextAttributes.ERROR_ATTRIBUTES);
+ }
+
+ @Override
public void renderSpecialSymbol(@NotNull String symbol) {
myText.append(symbol, SimpleTextAttributes.REGULAR_ATTRIBUTES);
}