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=((PHPDebugTarget)context.getDebugTarget()).getPHPDBGProxy(); PHPStackFrame 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=new String[1]; s1[0]=e.toString(); x=new PHPWatchExpressionResult(expression,null,s1); } listener.watchEvaluationFinished(x); } }