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) 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);
+ }
+
+ 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