X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java index a6646da..f8c54bd 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java @@ -6,24 +6,23 @@ */ package net.sourceforge.phpeclipse.xdebug.php.model; - import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils; -import org.eclipse.debug.core.DebugEvent; +//import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugException; +//import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.model.IValue; import org.eclipse.debug.core.model.IVariable; import org.w3c.dom.Node; - +//import org.eclipse.debug.core.model.IWatchExpressionDelegate; /** * @author Axel * * 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 class XDebugVariable extends XDebugElement implements IVariable/*, IWatchExpressionFactoryAdapter*/ { + /*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; @@ -31,18 +30,15 @@ public class XDebugVariable extends XDebugElement implements IVariable { public static final int VARTYPE_ARRAY = 8; public static final int VARTYPE_HASH = 9; public static final int VARTYPE_OBJECT = 10; - + public static final int VARTYPE_RESOURCE = 11;*/ - // name & stack frmae + private int fNumChildren; private String fName; - private XDebugStackFrame fFrame; private String fFullName; -// private String fTypeName; -// private int fType; - private XDebugAbstractValue fValue; private String fEncoding; - private int fNumChildren; -// private Node fVariableNode; + private XDebugStackFrame fFrame; + private XDebugAbstractValue fValue; + private String fFacet; /** * Constructs a variable contained in the given stack frame @@ -52,25 +48,32 @@ 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("")) + String address = PHPDebugUtils.getAttributeValue(property,"address"); + + fName = PHPDebugUtils.getAttributeValue(property,"name"); + if ("".equals(fName)) { + fName = address; + } /*else { + varName = Name; + }*/ + + fFullName = PHPDebugUtils.getAttributeValue(property,"fullname"); + fEncoding = PHPDebugUtils.getAttributeValue(property,"encoding"); + if (PHPDebugUtils.getAttributeValue(property,"numchildren").equals("")) { fNumChildren = 0; - else - fNumChildren=Integer.parseInt(PHPDebugUtils.getAttributeValue(property,"numchildren")); + } else { + fNumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(property, "numchildren")); + } - String typeName=PHPDebugUtils.getAttributeValue(property,"type"); + 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); else if (typeName.equals("float") ) @@ -85,26 +88,12 @@ public class XDebugVariable extends XDebugElement implements IVariable { fValue= new XDebugArrayValue(this,property,typeName); else if (typeName.equals("object") ) fValue= new XDebugArrayValue(this,property,typeName); + else if (typeName.equals("resource") ) + fValue= new XDebugResourceValue(this, property, typeName); 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); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getValue() */ @@ -112,6 +101,7 @@ public class XDebugVariable extends XDebugElement implements IVariable { return fValue; // return ((XDebugTarget)getDebugTarget()).getVariableValue(this); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getName() */ @@ -121,43 +111,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,7 +173,7 @@ public class XDebugVariable extends XDebugElement implements IVariable { protected XDebugStackFrame getStackFrame() { return fFrame; } - + // public int getType() { // return fType; // } @@ -182,28 +182,99 @@ public class XDebugVariable extends XDebugElement implements IVariable { return fValue.getValueString(); } + /*public setValueString(String newValueStrig) throws DebugException { + fValue.setValueString getValueString(); + }*/ + public boolean hasChildren() { - return (fNumChildren>0); - } - - public boolean isArray() { - return (fValue.isArray()); + return (fNumChildren > 0); } 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; } -} + public int getNumChildren() { + return fNumChildren; + } + + public void setChange(IVariable oldVariable) throws DebugException { + XDebugAbstractValue oldValue = null; + IVariable[] newVariable = null; + IVariable[] oldVariable1 = null; + + try { + oldValue = (XDebugAbstractValue) oldVariable.getValue(); + } catch (DebugException e) { + } + + try { + oldVariable1 = ((XDebugVariable)oldVariable).getValue().getVariables(); + newVariable = fValue.getVariables(); + } catch (DebugException e) { + } + + + if(((XDebugVariable) oldVariable).getNumChildren() > 0) { + if ( this.getNumChildren() == 0) { + try { + if (!fValue.getValueString().equals(((XDebugAbstractValue)oldValue).getValueString())) { + fValue.sethasChanged(true); + } else { + fValue.sethasChanged(false); + } + } catch (DebugException e) { + } + } else { + for(int i = 0; i < newVariable.length; i++) { + ((XDebugVariable)newVariable[i]).setChange(((XDebugVariable)oldVariable1[i])); + } + } + } else { + if ( this.getNumChildren() == 0) { + // controllare anche il tipo (unknow) + //if (!fValue.getValueString().equals("uninitialized")) { + if (!fValue.getValueString().equals(oldValue.getValueString())) { + fValue.sethasChanged(true); + } else { + fValue.sethasChanged(false); + } + } else { + //IVariable dummy = new XDebugVariable("UNKNOWN", ""); + /*dummy.setValue("uninitialized"); + for(int i = 0; i < newVariable.length; i++) { + ((XDebugVariable)newVariable[i]).setChange(dummy); + } + fValue.sethasChanged(true);*/ + } + } + } + /** + * Creates and returns an expression for the specified variable + * which is used to created an {@link org.eclipse.debug.core.model.IWatchExpression}. + * + * @param variable variable a watch expression is required for + * @return text used to create a watch expression + * @exception org.eclipse.core.runtime.CoreException if unable to create a watch + * expression + */ + /*public String createWatchExpression(IVariable variable) throws CoreException { + + }*/ +} \ No newline at end of file