-/*
- * 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
import net.sourceforge.phpeclipse.xdebug.core.Base64;
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;
* 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;
- public static final int VALUETYPE_RESOURCE = 11;
-
- protected XDebugVariable fVariable;
+public abstract class XDebugAbstractValue extends XDebugElement implements IValue {
private IVariable[] fVariables;
- protected String fValueString;
- protected int fType;
- protected String fTypeName;
-
+ private String fValueString;
+ private String fTypeName;
private boolean fhasChanged;
- public XDebugAbstractValue(XDebugVariable variable, String typeName) {
- super((XDebugTarget) variable.getDebugTarget());
- fVariable = variable;
- setType(typeName);
- fVariables= new IVariable[0];
- }
+ public XDebugAbstractValue(XDebugStackFrame frame, Node varNode) throws DebugException {
+ super(frame == null ? null : (XDebugTarget) frame.getDebugTarget());
-
- 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()) {
+ fTypeName = PHPDebugUtils.getAttributeValue(varNode,"type");
+
+ int NumChildren = 0;
+ if (!PHPDebugUtils.getAttributeValue(varNode,"numchildren").equals("")) {
+ NumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(varNode, "numchildren"));
+ }
+
+ if (NumChildren > 0) {
+ NodeList property = varNode.getChildNodes();
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);
+ fVariables[i] = new XDebugVariable(frame, 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")) {
+
+ String Encoding = PHPDebugUtils.getAttributeValue(varNode,"encoding");
+
+ if (Encoding.equals("base64")) {
if (str.length()!=0)
str=new String(Base64.decode(str));
else
str="";
}
renderValueString(str);
-// }
}
String className=PHPDebugUtils.getAttributeValue(varNode,"classname");
if(!"".equals(className))
renderValueString(className);
-
}
public boolean hasChanged() {
return fhasChanged;
}
- public void sethasChanged(boolean hasChanged) {
- fhasChanged = hasChanged;
- }
-
- public void setChildVariables(IVariable[] newChildVariables) {
- fVariables = newChildVariables;
- }
-
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IValue#getReferenceTypeName()
*/
return (fVariables.length > 0);
}
- public abstract void setType(String typeName);
- public abstract void renderValueString(String data);
+ public abstract void renderValueString(String data) throws DebugException;
public abstract boolean verifyValue(String expression);
- public boolean setValue(String expression) {
- if (!verifyValue(expression))
+ public boolean setValue(String expression) throws DebugException {
+ if (!verifyValue(expression)) {
return false;
- if( fTarget == null ) {
- renderValueString(expression);
- } else {
- if(fTarget.setVarValue(fVariable.getFullName(),expression)) {
- renderValueString(expression);
- return true;
- }
- }
- return false;
- }
-
- public boolean setValueA(String expression) {
- if(! fValueString.toString().equals(expression)) {
- fVariables= new IVariable[0];
- fValueString = expression;
- fhasChanged = true;
- } else {
- fhasChanged = false;
- }
-
- return true;
- }
-
- public boolean setValueB(IValue value) {
- try {
- fTypeName = value.getReferenceTypeName();
- } catch (DebugException e) {
}
- fhasChanged = false;
-
- switch (((XDebugAbstractValue) value). getType()) {
- case VALUETYPE_UNINITIALIZED:
- case VALUETYPE_STRING:
- case VALUETYPE_INT:
- case VALUETYPE_FLOAT:
- case VALUETYPE_BOOLEAN:
- try {
- if (! fValueString.equals(value.getValueString())) {
- fValueString = value.getValueString();
- fhasChanged = true;
- }
- } catch (DebugException e) {
- int a = 10;
- a++;
- }
- break;
-
- case VALUETYPE_RESOURCE:
- try {
- if (! fValueString.equals(value.getValueString())) {
- fValueString = value.getValueString();
- fhasChanged = true;
- }
- } catch (DebugException e) {
- int a = 10;
- a++;
- }
- break;
-
- case VALUETYPE_HASH:
- int a = 20;
- a = a +2;
- break;
-
- case VALUETYPE_OBJECT:
- case VALUETYPE_ARRAY:
- try {
- IVariable[] newVariable = value.getVariables();
-
- if (fVariables.length == 0) {
- if (newVariable.length > 0) {
- fValueString = value.getValueString();
- fVariables = newVariable;
- fhasChanged = true;
- }
- } else {
- for(int i = 0; i < fVariables.length; i++) {
- // da capire quando e perche'
- try {
- if (! ((XDebugVariable)fVariables[i]).equals(((XDebugVariable)newVariable[i]))) {
- //fVariables[i].setValue(newVariable[i].getValue());
- fhasChanged = true;
- }
- } catch (Exception e) {
- //int b = 1;
- }
- }
- if (fhasChanged) {
- fValueString = value.getValueString();
- for(int i = 0; i < fVariables.length; i++) {
- try {
- fVariables[i].setValue(newVariable[i].getValue());
- } catch (Exception e) {
- //int b = 1;
- }
- }
- }
- }
- } catch (DebugException e) {
- int b = 10;
- b++;
- }
-
- break;
- }
-
- return true;
+ renderValueString(expression);
+ fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT));
+
+ return true;
}
- public boolean setValueBOld(IValue value) {
- fhasChanged = false;
-
- switch (((XDebugAbstractValue) value). getType()) {
- case VALUETYPE_UNINITIALIZED:
- case VALUETYPE_STRING:
- case VALUETYPE_INT:
- case VALUETYPE_FLOAT:
- case VALUETYPE_BOOLEAN:
- try {
- if (! fValueString.equals(value.getValueString())) {
- fValueString = value.getValueString();
- fhasChanged = true;
- }
- } catch (DebugException e) {
- }
- break;
-
- case VALUETYPE_HASH:
- int a = 20;
- a = a +2;
- break;
-
- case VALUETYPE_OBJECT:
- case VALUETYPE_ARRAY:
- try {
- IVariable[] newVariable = value.getVariables();
-
- if (fVariables.length == 0) {
- if (newVariable.length > 0) {
- fValueString = value.getValueString();
- fVariables = newVariable;
- fhasChanged = true;
- }
- } else {
- for(int i = 0; i < fVariables.length; i++) {
- if (! ((XDebugVariable)fVariables[i]).equals(((XDebugVariable)newVariable[i]))) {
- //fVariables[i].setValue(newVariable[i].getValue());
- fhasChanged = true;
- }
- }
- if (fhasChanged) {
- fValueString = value.getValueString();
- for(int i = 0; i < fVariables.length; i++) {
- fVariables[i].setValue(newVariable[i].getValue());
- }
- }
- }
- } catch (DebugException e) {
- }
-
- break;
- }
-
- return true;
- }
-
- public int getType() {
- return fType;
- }
-
public boolean supportsValueModification() {
return false;
}
+
+ public void setValueString(String valueString) {
+ fValueString = valueString;
+ }
}
\ No newline at end of file