From 6a4a1305d00d3bba4dec147846ccfd434f771595 Mon Sep 17 00:00:00 2001 From: Pawel Piech Date: Wed, 12 Dec 2012 12:01:00 -0800 Subject: [PATCH] Bug 396396 - multiple identical expressions in the Expression view are shown as one expression --- .../debug/ui/model/TCFChildrenExpressions.java | 11 +++++++---- .../internal/debug/ui/model/TCFNodeExpression.java | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenExpressions.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenExpressions.java index 4a80df9..29f26d5 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenExpressions.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenExpressions.java @@ -37,10 +37,12 @@ public class TCFChildrenExpressions extends TCFChildren { for (TCFNode n : getNodes()) ((TCFNodeExpression)n).onMemoryMapChanged(); } - private TCFNodeExpression findScript(String text) { + private TCFNodeExpression findScript(String text, IExpression e) { for (TCFNode n : getNodes()) { - TCFNodeExpression e = (TCFNodeExpression)n; - if (text.equals(e.getScript())) return e; + TCFNodeExpression node = (TCFNodeExpression)n; + if (text.equals(node.getScript()) && (node.getExpression() == null || node.getExpression().equals(e)) ) { + return node; + } } return null; } @@ -59,8 +61,9 @@ public class TCFChildrenExpressions extends TCFChildren { HashMap data = new HashMap(); for (final IExpression e : node.model.getExpressionManager().getExpressions()) { String text = e.getExpressionText(); - TCFNodeExpression n = findScript(text); + TCFNodeExpression n = findScript(text, e); if (n == null) add(n = new TCFNodeExpression(node, text, null, null, null, -1, false)); + n.setPlatformExpression(e); n.setSortPosition(cnt++); if (e instanceof IWatchExpression) n.setEnabled(((IWatchExpression)e).isEnabled()); data.put(n.id, n); diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExpression.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExpression.java index 788d340..9a7cb61 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExpression.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExpression.java @@ -79,6 +79,7 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT private IExpressions.Value next_value; private byte[] parent_value; private String remote_expression_id; + private IExpression platform_expression; private static int expr_cnt; @@ -731,6 +732,14 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT public String getScript() { return script; } + + public IExpression getPlatformExpression() { + return platform_expression; + } + + void setPlatformExpression(IExpression expression) { + this.platform_expression = expression; + } String getFieldID() { return field_id; @@ -1890,15 +1899,11 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT public Object getAdapter(Class adapter) { if (script != null) { if (adapter == IExpression.class) { - IExpressionManager m = DebugPlugin.getDefault().getExpressionManager(); - for (final IExpression e : m.getExpressions()) { - if (script.equals(e.getExpressionText())) return e; - } + return platform_expression; } if (adapter == IWatchExpression.class) { - IExpressionManager m = DebugPlugin.getDefault().getExpressionManager(); - for (final IExpression e : m.getExpressions()) { - if (e instanceof IWatchExpression && script.equals(e.getExpressionText())) return e; + if (platform_expression instanceof IWatchExpression) { + return platform_expression; } } } -- 1.7.5.4