package net.sourceforge.phpdt.internal.debug.core.watch; import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy; import net.sourceforge.phpdt.internal.debug.core.model.PHPDebugTarget; import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame; import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable; import org.eclipse.debug.core.model.IDebugElement; import org.eclipse.debug.core.model.IWatchExpressionDelegate; import org.eclipse.debug.core.model.IWatchExpressionListener; import org.eclipse.debug.core.model.IWatchExpressionResult; /** * */ public class PHPWatchExpressionDelegate implements IWatchExpressionDelegate { public void evaluateExpression(String expression, IDebugElement context, IWatchExpressionListener listener) { IWatchExpressionResult x; PHPDBGProxy dbg; PHPStackFrame s; dbg = ((PHPDebugTarget) context.getDebugTarget()).getPHPDBGProxy(); s = null; if (context instanceof PHPStackFrame) { s = (PHPStackFrame) context; } try { PHPVariable result[] = dbg.eval(s, expression); if (result.length == 0) { x = new PHPWatchExpressionResult(expression, null, null); } else { x = new PHPWatchExpressionResult(expression, result[0] .getValue(), null); } } catch (Exception e) { String[] s1; s1 = new String[1]; s1[0] = e.toString(); x = new PHPWatchExpressionResult(expression, null, s1); } listener.watchEvaluationFinished(x); } }