Fix variable view value modification and refactored XDebugAbstractValue and derived...
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugObjectValue.java
index 2f3c66d..1af871a 100644 (file)
@@ -1,32 +1,38 @@
 package net.sourceforge.phpeclipse.xdebug.php.model;
 
+import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils;
+
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IVariable;
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class XDebugObjectValue extends XDebugAbstractValue {
-
-       public XDebugObjectValue(XDebugVariable variable, Node varNode,
-                       String typeName) {
-               super(variable, varNode, typeName);
+       private int NumChildren;
+
+       public XDebugObjectValue(XDebugStackFrame variable, Node value) throws DebugException {
+               super(variable, value);
+
+               NumChildren = 0;
+               if (!PHPDebugUtils.getAttributeValue(value, "numchildren").equals("")) {
+                       NumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(value, "numchildren"));
+               }               
+
+               if (NumChildren > 0) {
+                       NodeList property = value.getChildNodes();
+                       IVariable[] Variables = new IVariable[property.getLength()];
+                       
+                       for (int i = 0; i<property.getLength(); i++) {
+                               Node propertyNode = property.item(i);
+                               Variables[i] = new XDebugVariable(variable, propertyNode);
+                       }
+                       
+                       setChildren(Variables);
+               }
+               
+               String className = PHPDebugUtils.getAttributeValue(value,"classname");
+               if(!"".equals(className)) {
+                       setValueString(className);
+               }
        }
-
-       public void setType(String typeName) {
-               fType = XDebugAbstractValue.VALUETYPE_OBJECT;
-               fTypeName = typeName;
-
-       }
-
-       public void renderValueString(String data) {
-               fValueString = data;
-
-       }
-
-       public String toString() {
-               return "class " + fValueString;
-       }
-
-       public boolean verifyValue(String expression) {
-               // TODO Auto-generated method stub
-               return false;
-       }
-
-}
+}
\ No newline at end of file