diff options
Diffstat (limited to 'plugins')
6 files changed, 39 insertions, 62 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 303d5b24e..1bd6a85fa 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2012 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2016 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -37,12 +37,10 @@ public class TCFChildrenExpressions extends TCFChildren { for (TCFNode n : getNodes()) ((TCFNodeExpression)n).onMemoryMapChanged(); } - private TCFNodeExpression findScript(String text, IExpression e) { + private TCFNodeExpression findScript(IExpression e) { for (TCFNode n : getNodes()) { TCFNodeExpression node = (TCFNodeExpression)n; - if (text.equals(node.getScript()) && - (node.getPlatformExpression() == null || node.getPlatformExpression().equals(e)) ) - { + if (e == node.getPlatformExpression() && e.getExpressionText().equals(node.getScript())) { return node; } } @@ -62,16 +60,14 @@ public class TCFChildrenExpressions extends TCFChildren { int cnt = 0; HashMap<String,TCFNode> data = new HashMap<String,TCFNode>(); for (final IExpression e : node.model.getExpressionManager().getExpressions()) { - String text = e.getExpressionText(); - TCFNodeExpression n = findScript(text, e); - if (n == null) add(n = new TCFNodeExpression(node, text, null, null, null, -1, false)); - n.setPlatformExpression(e); + TCFNodeExpression n = findScript(e); + if (n == null) add(n = new TCFNodeExpression(node, null, e, null, null, null, -1, false)); n.setSortPosition(cnt++); if (e instanceof IWatchExpression) n.setEnabled(((IWatchExpression)e).isEnabled()); data.put(n.id, n); } TCFNodeExpression n = findEmpty(); - if (n == null) add(n = new TCFNodeExpression(node, null, null, null, null, -1, false)); + if (n == null) add(n = new TCFNodeExpression(node, null, null, null, null, null, -1, false)); n.setSortPosition(cnt++); data.put(n.id, n); set(null, null, data); diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenHoverExpressions.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenHoverExpressions.java index 3f3bdd8b8..f5156ca34 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenHoverExpressions.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenHoverExpressions.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2012 Wind River Systems, Inc. and others. + * Copyright (c) 2010, 2016 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -60,7 +60,7 @@ class TCFChildrenHoverExpressions extends TCFChildren { if (expression != null) { TCFNodeExpression expression_node = findScript(expression); if (expression_node == null) { - add(expression_node = new TCFNodeExpression(node, expression, null, null, null, -1, false)); + add(expression_node = new TCFNodeExpression(node, expression, null, null, null, null, -1, false)); } data.put(expression_node.id, expression_node); } diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLocalVariables.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLocalVariables.java index 03eccd093..dc48b63d8 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLocalVariables.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLocalVariables.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2012 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2016 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -65,7 +65,7 @@ public class TCFChildrenLocalVariables extends TCFChildren { data = new HashMap<String,TCFNode>(); for (String id : contexts) { TCFNodeExpression n = (TCFNodeExpression)node.model.getNode(id); - if (n == null) n = new TCFNodeExpression(node, null, null, id, null, -1, false); + if (n == null) n = new TCFNodeExpression(node, null, null, null, id, null, -1, false); assert n.id.equals(id); assert n.parent == node; n.setSortPosition(cnt++); diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLogExpressions.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLogExpressions.java index a138d1c61..8634e4843 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLogExpressions.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenLogExpressions.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. + * Copyright (c) 2011, 2016 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -57,7 +57,7 @@ public class TCFChildrenLogExpressions extends TCFChildren { for (String script : scripts) { TCFNodeExpression expression_node = findScript(script); if (expression_node == null) { - add(expression_node = new TCFNodeExpression(node, script, null, null, null, -1, false)); + add(expression_node = new TCFNodeExpression(node, script, null, null, null, null, -1, false)); } data.put(expression_node.id, expression_node); } diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java index 97741a6ee..1b509b85e 100644 --- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java +++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java @@ -91,7 +91,7 @@ public class TCFChildrenSubExpressions extends TCFChildren { } } if (isValid()) return null; - TCFNodeExpression e = new TCFNodeExpression(node, null, field_id, null, null, -1, deref); + TCFNodeExpression e = new TCFNodeExpression(node, null, null, field_id, null, null, -1, deref); add(e); return e; } @@ -258,7 +258,7 @@ public class TCFChildrenSubExpressions extends TCFChildren { if (!reg_children.validate(this)) return false; for (TCFNode subnode : reg_children.toArray()) { TCFNodeExpression n = findReg(subnode.id); - if (n == null) add(n = new TCFNodeExpression(node, null, null, null, subnode.id, -1, false)); + if (n == null) add(n = new TCFNodeExpression(node, null, null, null, null, subnode.id, -1, false)); n.setSortPosition(map.size()); map.put(n.id, n); } @@ -312,7 +312,7 @@ public class TCFChildrenSubExpressions extends TCFChildren { HashMap<String,TCFNode> data = new HashMap<String,TCFNode>(); for (String s : c.getData()) { TCFNodeExpression n = findScript(s); - if (n == null) n = new TCFNodeExpression(node, s, null, null, null, -1, false); + if (n == null) n = new TCFNodeExpression(node, s, null, null, null, null, -1, false); n.setSortPosition(i++); data.put(n.id, n); } @@ -355,7 +355,7 @@ public class TCFChildrenSubExpressions extends TCFChildren { if (size <= 100) { for (int i = offs; i < offs + size; i++) { TCFNodeExpression n = findIndex(i, false); - if (n == null) n = new TCFNodeExpression(node, null, null, null, null, i, false); + if (n == null) n = new TCFNodeExpression(node, null, null, null, null, null, i, false); n.setSortPosition(i); data.put(n.id, n); } @@ -387,7 +387,7 @@ public class TCFChildrenSubExpressions extends TCFChildren { } else { TCFNodeExpression n = findIndex(0, true); - if (n == null) n = new TCFNodeExpression(node, null, null, null, null, 0, true); + if (n == null) n = new TCFNodeExpression(node, null, null, null, null, null, 0, true); n.setSortPosition(0); 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 9352360e0..0b5527eba 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 @@ -19,11 +19,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IExpressionManager; -import org.eclipse.debug.core.ILaunch; -import org.eclipse.debug.core.model.IDebugElement; import org.eclipse.debug.core.model.IExpression; import org.eclipse.debug.core.model.IWatchExpression; import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate; @@ -33,7 +29,6 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdat import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate; import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugModelPresentation; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.viewers.CellEditor; @@ -66,10 +61,11 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT // TODO: enable Change Value user command private final String script; - private final int index; - private final boolean deref; + private final IExpression platform_expression; private final String field_id; private final String reg_id; + private final int index; + private final boolean deref; private final TCFData<String> base_text; private final TCFData<IExpressions.Expression> var_expression; private final TCFData<IExpressions.Expression> rem_expression; @@ -86,7 +82,6 @@ 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 Object update_generation; private static int expr_cnt; @@ -100,11 +95,18 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT } }; - TCFNodeExpression(final TCFNode parent, final String script, + TCFNodeExpression(final TCFNode parent, String expression_script, IExpression platform_expression, final String field_id, final String var_id, final String reg_id, final int index, final boolean deref) { super(parent, var_id != null ? var_id : "Expr" + expr_cnt++); - this.script = script; + if (platform_expression == null) { + this.script = expression_script; + this.platform_expression = null; + } + else { + this.script = platform_expression.getExpressionText(); + this.platform_expression = platform_expression; + } this.field_id = field_id; this.reg_id = reg_id; this.index = index; @@ -807,10 +809,6 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT return platform_expression; } - void setPlatformExpression(IExpression expression) { - this.platform_expression = expression; - } - String getFieldID() { return field_id; } @@ -2205,33 +2203,16 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT public void run() { try { if (TCFColumnPresentationExpression.COL_NAME.equals(property)) { - if (node.is_empty) { - if (value instanceof String) { - final String s = ((String)value).trim(); - if (s.length() > 0) { - node.model.getDisplay().asyncExec(new Runnable() { - public void run() { - IWatchExpression expression = DebugPlugin.getDefault().getExpressionManager().newWatchExpression(s); - DebugPlugin.getDefault().getExpressionManager().addExpression(expression); - IAdaptable object = DebugUITools.getDebugContext(); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement)object; - } - else if (object instanceof ILaunch) { - context = ((ILaunch)object).getDebugTarget(); - } - expression.setExpressionContext(context); - } - }); - } + if (value instanceof String) { + String s = ((String)value).trim(); + IExpressionManager m = node.model.getExpressionManager(); + if (node.is_empty) { + if (s.length() > 0) m.addExpression(m.newWatchExpression(s)); + } + else if (node.platform_expression != null && !s.equals(node.script)) { + m.removeExpression(node.platform_expression); + if (s.length() > 0) m.addExpression(m.newWatchExpression(s)); } - } - else if (!node.script.equals(value)) { - IExpressionManager m = DebugPlugin.getDefault().getExpressionManager(); - m.removeExpression(node.platform_expression); - IExpression e = m.newWatchExpression((String)value); - m.addExpression(e); } done(Boolean.TRUE); return; @@ -2357,7 +2338,7 @@ public class TCFNodeExpression extends TCFNode implements IElementEditor, ICastT @SuppressWarnings("rawtypes") @Override public Object getAdapter(Class adapter) { - if (script != null) { + if (platform_expression != null) { if (adapter == IExpression.class) { return platform_expression; } |