1) Added parameter 'parent' to XDebugVariable, so we can determine whether a variable...
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugVariable.java
index 35b04a0..31b9b0d 100644 (file)
@@ -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()
         */