1) Made getVariables and evalBlock methods in PHPDBGInterface synchronized (At least...
[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 /**
14  *
15  */
16 public class PHPWatchExpressionDelegate implements IWatchExpressionDelegate {
17
18         public void evaluateExpression (String expression, IDebugElement context, IWatchExpressionListener listener) {
19         IWatchExpressionResult  x;
20                 PHPDBGProxy                     dbg;
21                 PHPStackFrame                   s;
22
23                 dbg = ((PHPDebugTarget) context.getDebugTarget ()).getPHPDBGProxy ();
24                 s   = null;
25
26                 if (context instanceof PHPStackFrame) {
27                         s = (PHPStackFrame) context;
28                 }
29
30                 try {
31                         PHPVariable result[] = dbg.eval (s, expression);
32
33                         if (result.length == 0) {
34                                 x = new PHPWatchExpressionResult (expression, null, null);
35                         }
36                         else {
37                                 x = new PHPWatchExpressionResult (expression, result[0].getValue (), null);
38                         }
39                 }
40                 catch (Exception e) {
41                         String[] s1;
42
43                         s1    = new String[1];
44                         s1[0] = e.toString ();
45                         x     = new PHPWatchExpressionResult (expression, null, s1);
46                 }
47
48                 listener.watchEvaluationFinished (x);
49         }
50 }