2c3964d6022502648654ee4fc9379a5ddbab4c17
[phpeclipse.git] / net.sourceforge.phpeclipse.debug.core / src / net / sourceforge / phpdt / internal / debug / core / watch / PHPWatchExpressionDelegate.java
1 package net.sourceforge.phpdt.internal.debug.core.watch;
2
3 import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy;
4 import net.sourceforge.phpdt.internal.debug.core.model.PHPDebugTarget;
5 import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame;
6 import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable;
7
8 import org.eclipse.debug.core.model.IDebugElement;
9 import org.eclipse.debug.core.model.IWatchExpressionDelegate;
10 import org.eclipse.debug.core.model.IWatchExpressionListener;
11 import org.eclipse.debug.core.model.IWatchExpressionResult;
12
13 public class PHPWatchExpressionDelegate implements IWatchExpressionDelegate {
14
15        public void evaluateExpression(String expression, IDebugElement context,
16                        IWatchExpressionListener listener) {
17                IWatchExpressionResult x;
18                PHPDBGProxy dbg=((PHPDebugTarget)context.getDebugTarget()).getPHPDBGProxy();
19                PHPStackFrame s=null;
20                if(context instanceof PHPStackFrame)
21                        s=(PHPStackFrame)context;
22                try{
23                PHPVariable result[]=dbg.eval(s,expression);
24                if(result.length==0)
25                        x=new PHPWatchExpressionResult(expression,null,null);
26                else
27                        x=new PHPWatchExpressionResult(expression,result[0].getValue(),null);
28                }
29                catch(Exception e)
30                {
31                        String[] s1=new String[1];
32                        s1[0]=e.toString();
33                x=new PHPWatchExpressionResult(expression,null,s1);
34                }
35                listener.watchEvaluationFinished(x);
36        }
37
38 }