Fix variable view value modification and refactored XDebugAbstractValue and derived...
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugAbstractValue.java
index a3c7cdd..eb91e5b 100644 (file)
-/*
- * Created on 23.11.2004
+ /* Created on 23.11.2004
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
 package net.sourceforge.phpeclipse.xdebug.php.model;
 
-import net.sourceforge.phpeclipse.xdebug.core.Base64;
 import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils;
 
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IValue;
 import org.eclipse.debug.core.model.IVariable;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * @author Axel
- * 
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
  */
-public abstract class XDebugAbstractValue extends XDebugElement implements
-               IValue {
-
-       public static final int VALUETYPE_UNKNOWN = -1;
-
-       public static final int VALUETYPE_UNINITIALIZED = 0;
-
-       public static final int VALUETYPE_STRING = 1;
-
-       public static final int VALUETYPE_INT = 4;
-
-       public static final int VALUETYPE_FLOAT = 5;
-
-       public static final int VALUETYPE_BOOLEAN = 6;
-
-       public static final int VALUETYPE_ARRAY = 8;
-
-       public static final int VALUETYPE_HASH = 9;
-
-       public static final int VALUETYPE_OBJECT = 10;
-
-       protected XDebugVariable fVariable;
 
+public /*abstract*/ class XDebugAbstractValue  extends XDebugElement implements IValue {
        private IVariable[] fVariables;
-
-       protected String fValueString;
-
-       protected int fType;
-
-       protected String fTypeName;
-
-       public XDebugAbstractValue(XDebugVariable variable, Node varNode,
-                       String typeName) {
-               super((XDebugTarget) variable.getDebugTarget());
-               fVariable = variable;
-               if (varNode == null) {
-                       try {
-                               System.out.println(variable.getName() + "=null");
-                       } catch (DebugException e) {
-                               // TODO Auto-generated catch block
-                               e.printStackTrace();
-                       }
-                       return;
-               }
-               setType(typeName);
-               NodeList property = varNode.getChildNodes();
-               if (variable.hasChildren()) {
-                       renderValueString("" + property.getLength());
-                       fVariables = new IVariable[property.getLength()];
-                       for (int i = 0; i < property.getLength(); i++) {
-                               Node propertyNode = property.item(i);
-                               fVariables[i] = new XDebugVariable(variable.getStackFrame(),
-                                               propertyNode);
-                       }
-               } else {
-                       // fDataString="";
-                       fVariables = new IVariable[0];
-                       // if (variable.getType()== XDebugVariable.VARTYPE_UNINITIALIZED)
-                       // fValueString="uninitialized";
-                       // else {
-                       String str = "";
-                       try {
-                               str = varNode.getFirstChild().getNodeValue();
-                       } catch (NullPointerException e) {
-                               str = "";
-                       }
-                       if (variable.getEncoding().equals("base64")) {
-                               if (str.length() != 0)
-                                       str = new String(Base64.decode(str));
-                               else
-                                       str = "";
-                       }
-                       renderValueString(str);
-                       // }
+       private String fValueString;
+       private String fTypeName;
+       private boolean fhasChanged;
+       protected String rowValue;
+       
+       public XDebugAbstractValue(XDebugStackFrame frame, Node value) throws DebugException  {
+               super(frame == null ? null : (XDebugTarget)frame.getDebugTarget());
+
+               fTypeName = PHPDebugUtils.getAttributeValue(value, "type");
+               
+               fVariables = new IVariable[0];
+
+               rowValue = "";
+               try {
+                       rowValue = value.getFirstChild().getNodeValue();
+               } catch (NullPointerException e) {
+                       rowValue = "";
                }
-               String className = PHPDebugUtils
-                               .getAttributeValue(varNode, "classname");
-               if (className != "")
-                       renderValueString(className);
-
        }
-
-       /*
-        * (non-Javadoc)
-        * 
+       
+       public boolean hasChanged() {
+               return fhasChanged;
+       }
+       
+       /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValue#getReferenceTypeName()
         */
        public String getReferenceTypeName() throws DebugException {
                return fTypeName;
        }
-
-       /*
-        * (non-Javadoc)
-        * 
+       
+       /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValue#getValueString()
         */
        public String getValueString() throws DebugException {
                return fValueString;
        }
-
-       /*
-        * (non-Javadoc)
-        * 
+       
+       /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValue#isAllocated()
         */
        public boolean isAllocated() throws DebugException {
                return true;
        }
-
-       /*
-        * (non-Javadoc)
-        * 
+       
+       /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValue#getVariables()
         */
        public IVariable[] getVariables() throws DebugException {
                return fVariables;
        }
-
-       /*
-        * (non-Javadoc)
-        * 
+       
+       /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValue#hasVariables()
         */
        public boolean hasVariables() throws DebugException {
                return (fVariables.length > 0);
        }
-
-       public boolean isArray() {
-               return ((fType & VALUETYPE_ARRAY) > 0);
+       
+       public boolean setValue(String expression) throws DebugException {
+               return true;
+       };
+       
+       protected boolean verifyValue(String expression) {
+               return true;
        }
-
-       public abstract void setType(String typeName);
-
-       public abstract void renderValueString(String data);
-
-       public abstract boolean verifyValue(String expression);
-
-       public boolean setValue(String expression) {
-               if (!verifyValue(expression))
-                       return false;
-               if (fTarget.setVarValue(fVariable.getFullName(), expression)) {
-                       renderValueString(expression);
-                       return true;
-               }
+       
+       protected boolean supportsValueModification() {
                return false;
        }
+       
+       protected void setValueString(String valueString) {
+               fValueString = valueString;
+       }
 
-       public boolean supportsValueModification() {
-               return false;
+       protected void setChildren(IVariable[] newChildren) {
+               fVariables = newChildren;
        }
-}
+}
\ No newline at end of file