X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java index 35b04a0..31b9b0d 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java @@ -21,6 +21,7 @@ import org.w3c.dom.Node; */ public class XDebugVariable extends XDebugElement implements IVariable { private String fName; + private String fNameFull; private XDebugStackFrame fFrame; private XDebugAbstractValue fValue; private String fFacet; @@ -34,13 +35,26 @@ public class XDebugVariable extends XDebugElement implements IVariable { * @param frame owning stack frame * @param name variable name */ - public XDebugVariable(XDebugStackFrame frame, Node property) throws DebugException { + public XDebugVariable(XDebugStackFrame frame, Node property, XDebugVariable parent) throws DebugException { super((XDebugTarget) frame.getDebugTarget()); + + this.fParent = parent; + if (frame != null ) { fFrame = frame; } - fName = PHPDebugUtils.getAttributeValue(property,"name"); + if (parent == null) { + fName = "$" + PHPDebugUtils.getAttributeValue(property,"name"); // Prepend the variable 'short' name with the php variable prefix '$' + } + else { + fName = PHPDebugUtils.getAttributeValue(property,"name"); // If this is the root variable don't prepend prefix '$' + } + + fNameFull = PHPDebugUtils.getAttributeValue(property,"fullname"); // The fullname has the '$' prepended, but it is the fully qualified name + // e.g. $myvar->child->a_variable. The fullname would be suitable to take for + // the setting a watch expression + if ("".equals(fName)) { fName = PHPDebugUtils.getAttributeValue(property,"address"); } @@ -58,9 +72,9 @@ public class XDebugVariable extends XDebugElement implements IVariable { else if (typeName.equals("string") ) fValue = new XDebugStringValue(frame, property); else if (typeName.equals("array") ) - fValue = new XDebugArrayValue(frame, property); + fValue = new XDebugArrayValue(frame, property, this); else if (typeName.equals("object") ) - fValue = new XDebugObjectValue(frame, property); + fValue = new XDebugObjectValue(frame, property, this); else if (typeName.equals("resource") ) fValue = new XDebugResourceValue(frame, property); else @@ -81,6 +95,13 @@ public class XDebugVariable extends XDebugElement implements IVariable { return fName; } + /* + * @return The fully qualified name of the variable + */ + public String getNameFull () { + return fNameFull; + } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getReferenceTypeName() */