/* 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 java.util.Arrays; import java.util.Iterator; import java.util.Vector; 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; /** * @author Axel * * 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 { private String fValueString; private String fTypeName; private boolean fhasChanged; protected String rowValue; private boolean fSorted; private Vector fVariables; // The children of this variable (other variables) if any public XDebugAbstractValue(XDebugStackFrame frame, Node value) throws DebugException { super(frame == null ? null : (XDebugTarget)frame.getDebugTarget()); fTypeName = PHPDebugUtils.getAttributeValue(value, "type"); fVariables = new Vector(); // Create an empty vector fValueString = ""; rowValue = ""; fSorted = false; try { rowValue = value.getFirstChild().getNodeValue(); } catch (NullPointerException e) { rowValue = ""; } } public boolean hasChanged() { return fhasChanged; } public void setChanged(boolean changed) { fhasChanged = changed; } /** * * @param item */ public Vector addVariable(Vector item) { if (item != null) { // If there is something we want to add fVariables.addAll(item); fSorted = false; } return this.fVariables; } /** * * @param parent */ public void setParent(XDebugVariable parent) { if (!fVariables.isEmpty()) { // If we have child variables Iterator iter = fVariables.iterator(); // Create an iterator for the children while (iter.hasNext()) { // As long as we have children ((XDebugVariable) iter.next()).setParent(parent); // Set all child's parent } } } /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getReferenceTypeName() */ public String getReferenceTypeName() throws DebugException { return fTypeName; } /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getValueString() */ public String getValueString() throws DebugException { return fValueString; } /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#isAllocated() */ public boolean isAllocated() throws DebugException { return true; } /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getVariables() */ public IVariable[] getVariables() throws DebugException { return (XDebugVariable[]) getChildVariables().toArray( new XDebugVariable[fVariables.size()]); } /** * */ public Vector getChildVariables() { return fVariables; } /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#hasVariables() */ public boolean hasVariables() throws DebugException { return (fVariables.size() != 0); } public boolean setValue(String expression) throws DebugException { return true; }; protected boolean verifyValue(String expression) { return true; } protected boolean supportsValueModification() { return false; } protected void setValueString(String valueString) { fValueString = valueString; } protected void setChildren(IVariable[] newChildren) { fVariables = new Vector (Arrays.asList(newChildren)); } public void setReferenceTypeName (String referenceTypeName) { fTypeName = referenceTypeName; } }