Whole refactor.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugVariable.java
index a6646da..f02a5ec 100644 (file)
@@ -6,10 +6,8 @@
  */
 package net.sourceforge.phpeclipse.xdebug.php.model;
 
-
 import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils;
 
-import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IValue;
 import org.eclipse.debug.core.model.IVariable;
@@ -21,28 +19,12 @@ import org.w3c.dom.Node;
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
-public class XDebugVariable  extends XDebugElement implements IVariable {
-       
-       public static final int VARTYPE_UNKNOWN = -1;
-       public static final int VARTYPE_UNINITIALIZED = 0;
-       public static final int VARTYPE_STRING = 1;
-       public static final int VARTYPE_INT = 2;
-       public static final int VARTYPE_FLOAT = 3;
-       public static final int VARTYPE_ARRAY = 8;
-       public static final int VARTYPE_HASH = 9;
-       public static final int VARTYPE_OBJECT = 10;
-
-       
-       // name & stack frmae
+public class XDebugVariable extends XDebugElement implements IVariable {
        private String fName;
-       private XDebugStackFrame fFrame;
        private String fFullName;
-//     private String fTypeName;
-//     private int fType;
+       private XDebugStackFrame fFrame;
        private XDebugAbstractValue fValue;
-       private String fEncoding;
-       private int fNumChildren;
-//     private Node fVariableNode;
+       private String fFacet;
        
        /**
         * Constructs a variable contained in the given stack frame
@@ -52,66 +34,51 @@ public class XDebugVariable  extends XDebugElement implements IVariable {
         * @param name variable name
         */
        public XDebugVariable(XDebugStackFrame frame, Node property) {
-               super((XDebugTarget) frame.getDebugTarget());
-               fFrame = frame;
-               init(property);
+               if (frame != null ) {
+                       //super((XDebugTarget) frame.getDebugTarget());
+                       fFrame = frame;
+               }
 
-       }
-       
-       private void  init(Node property) {
-               fFullName=PHPDebugUtils.getAttributeValue(property,"fullname");
-               fName=PHPDebugUtils.getAttributeValue(property,"name");
-               fEncoding=PHPDebugUtils.getAttributeValue(property,"encoding");
-               if (PHPDebugUtils.getAttributeValue(property,"numchildren").equals(""))
-                       fNumChildren = 0;
-               else
-                       fNumChildren=Integer.parseInt(PHPDebugUtils.getAttributeValue(property,"numchildren"));
+               String address = PHPDebugUtils.getAttributeValue(property,"address");
 
-               String typeName=PHPDebugUtils.getAttributeValue(property,"type");
+               fName = PHPDebugUtils.getAttributeValue(property,"name");
+               if ("".equals(fName)) {
+                       fName = address;
+               }
+               
+               fFullName = PHPDebugUtils.getAttributeValue(property,"fullname");
+
+               String typeName = PHPDebugUtils.getAttributeValue(property, "type");
+
+               fFacet = PHPDebugUtils.getAttributeValue(property, "facet");
 
-//             if (typeName.equals("uninitialized") )
-//                     fValue= new XDebugValue(this,property,typeName);
                if (typeName.equals("int") ) 
-                       fValue= new XDebugIntValue(this,property,typeName);
+                       fValue = new XDebugIntValue(frame, property);
                else if (typeName.equals("float") ) 
-                       fValue= new XDebugFloatValue(this,property,typeName);
+                       fValue = new XDebugFloatValue(frame, property);
                else if (typeName.equals("bool") ) 
-                       fValue= new XDebugBooleanValue(this,property,typeName);
+                       fValue = new XDebugBooleanValue(frame, property);
                else if (typeName.equals("string") )
-                       fValue= new XDebugStringValue(this,property,typeName);
+                       fValue = new XDebugStringValue(frame, property);
                else if (typeName.equals("array") )
-                       fValue= new XDebugArrayValue(this,property,typeName);
+                       fValue = new XDebugArrayValue(frame, property);
                else if (typeName.equals("hash") )
-                       fValue= new XDebugArrayValue(this,property,typeName);
+                       fValue = new XDebugArrayValue(frame, property);
                else if (typeName.equals("object") )
-                       fValue= new XDebugArrayValue(this,property,typeName);
+                       fValue = new XDebugArrayValue(frame, property);
+               else if (typeName.equals("resource") )
+                       fValue = new XDebugResourceValue(frame, property);
                else
-                       fValue= new XDebugValue(this,property,typeName);
-
-//             else if (typeName.equals("float") )
-//                     fTypeName= VARTYPE_FLOAT;
-//             else if (typeName.equals("string") )
-//                     fTypeName= VARTYPE_STRING;
-//             else if (typeName.equals("hash") )
-//                     fTypeName= VARTYPE_HASH;
-//             else if (typeName.equals("array") )
-//                     fTypeName= VARTYPE_ARRAY;
-//             else if (typeName.equals("object") )
-//                     fTypeName= VARTYPE_OBJECT;
-
-               
-                               
-//             fTypeName=type;
-//             
-//             fValue= new XDebugValue(this,property);
+                       fValue = new XDebugValue(frame, property);
        }
+               
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IVariable#getValue()
         */
        public IValue getValue() throws DebugException {
                return fValue;
-//             return ((XDebugTarget)getDebugTarget()).getVariableValue(this);
        }
+       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IVariable#getName()
         */
@@ -121,43 +88,53 @@ public class XDebugVariable  extends XDebugElement implements IVariable {
                else
                        return fName;
        }
+       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IVariable#getReferenceTypeName()
         */
        public String getReferenceTypeName() throws DebugException {
                return fValue.getReferenceTypeName();
        }
+       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IVariable#hasValueChanged()
         */
        public boolean hasValueChanged() throws DebugException {
-               // TODO Auto-generated method stub
-               return false;
+               return fValue.hasChanged();
        }
+       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValueModification#setValue(java.lang.String)
         */
        public void setValue(String expression) throws DebugException {
-               if(fValue.setValue(expression))
-                       fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT));
+               if(fValue.setValue(expression)) {
+                       
+               }
+                       //fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT));
+               //fValue.setValueA(expression);
        }
+       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValueModification#setValue(org.eclipse.debug.core.model.IValue)
         */
        public void setValue(IValue value) throws DebugException {
+               //fValue.setValueB(value);
        }
+
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValueModification#supportsValueModification()
         */
        public boolean supportsValueModification() {
                return fValue.supportsValueModification();
        }
+
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValueModification#verifyValue(java.lang.String)
         */
        public boolean verifyValue(String expression) throws DebugException {
                return fValue.verifyValue(expression);
        }
+
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IValueModification#verifyValue(org.eclipse.debug.core.model.IValue)
         */
@@ -173,37 +150,20 @@ public class XDebugVariable  extends XDebugElement implements IVariable {
        protected XDebugStackFrame getStackFrame() {
                return fFrame;
        }
-
-//     public int getType() {
-//             return fType;
-//     }
-
+       
        public String getValueString() throws DebugException {
                return fValue.getValueString();
        }
        
-       public boolean hasChildren() {
-               return (fNumChildren>0);
-       }
-
-       public boolean isArray() {
-               return (fValue.isArray());
-       }
-
-       public String getEncoding() {
-               return fEncoding;
+       public String getVisibility() {
+               return fFacet;
        }
 
-       public void setEncoding(String encoding) {
-               fEncoding = encoding;
-       }
-       
        public String toString() {
-               return fValue.toString();
+               return null;
        }
 
        public String getFullName() {
                return fFullName;
        }
-
-}
+}
\ No newline at end of file