48f0ba741a7da7e10f507fbebab318b84c263c6c
[idea/community.git] / python / pydevSrc / com / jetbrains / python / debugger / PyFullValueEvaluator.java
1 package com.jetbrains.python.debugger;
2
3 import com.intellij.xdebugger.frame.XFullValueEvaluator;
4 import org.jetbrains.annotations.NotNull;
5
6 /**
7  * @author traff
8  */
9 public class PyFullValueEvaluator extends XFullValueEvaluator {
10   private final PyFrameAccessor myDebugProcess;
11   private final String myExpression;
12
13   /**
14    * @param linkText     text of the link what will be appended to a variables tree node text
15    * @param debugProcess
16    * @param expression
17    */
18   protected PyFullValueEvaluator(PyFrameAccessor debugProcess, String expression) {
19     myDebugProcess = debugProcess;
20     myExpression = expression;
21   }
22
23
24   @Override
25   public void startEvaluation(@NotNull XFullValueEvaluationCallback callback) {
26     String expression = myExpression.trim();
27     if ("".equals(expression)) {
28       callback.evaluated("");
29       return;
30     }
31
32     try {
33       final PyDebugValue value = myDebugProcess.evaluate(expression, false, false);
34       callback.evaluated(value.getValue());
35     }
36     catch (PyDebuggerException e) {
37       callback.errorOccurred(e.getTracebackError());
38     }
39   }
40 }