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 / XDebugArrayValue.java
index cded934..7680a89 100644 (file)
@@ -1,36 +1,46 @@
 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 XDebugArrayValue extends XDebugAbstractValue {
-
-       public XDebugArrayValue(XDebugVariable variable, Node varNode,
-                       String typeName) {
-               super(variable, varNode, typeName);
-       }
-       
-       public XDebugArrayValue(XDebugVariable variable, String typeName) {
-               super(variable, typeName);
-       }
-
-
-       public void setType(String typeName) {
-               fType=XDebugAbstractValue.VALUETYPE_ARRAY;
-               fTypeName=typeName;
-
+       private int NumChildren;
+
+       public XDebugArrayValue(XDebugStackFrame variable, Node value, XDebugVariable parent) 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();
+                       renderValueString(""+property.getLength());
+                       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, parent);
+                       }
+                       
+                       setChildren(Variables);
+               }
        }
 
-       public void renderValueString(String data) {
-               if (data.isEmpty()) {
-                       fValueString = /*"Array */"empty";
+       private void renderValueString(String data) throws DebugException  {
+               if (data.equals("")) {
+                       setValueString("empty");
                } else {
-                       fValueString = /*"Array " + */data + " element(s)";                     
+                       if ("array".equals(getReferenceTypeName())) {
+                               setValueString("array(" + NumChildren + ")");
+                       } else {
+                               setValueString(data);
+                       }
                }
        }
-
-       public boolean verifyValue(String expression) {
-               // TODO Auto-generated method stub
-               return false;
-       }
-
-}
+}
\ No newline at end of file