PY-21230 Open numeric container viewers from "View" hyperlink
[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(String linkText, PyFrameAccessor debugProcess, String expression) {
19     super(linkText);
20     myDebugProcess = debugProcess;
21     myExpression = expression;
22   }
23
24
25   protected PyFullValueEvaluator(PyFrameAccessor debugProcess, String expression) {
26     myDebugProcess = debugProcess;
27     myExpression = expression;
28   }
29
30
31   @Override
32   public void startEvaluation(@NotNull XFullValueEvaluationCallback callback) {
33     String expression = myExpression.trim();
34     if ("".equals(expression)) {
35       callback.evaluated("");
36       return;
37     }
38
39     try {
40       final PyDebugValue value = myDebugProcess.evaluate(expression, false, false);
41       callback.evaluated(value.getValue());
42       showCustomPopup(myDebugProcess, value);
43     }
44     catch (PyDebuggerException e) {
45       callback.errorOccurred(e.getTracebackError());
46     }
47   }
48
49   protected void showCustomPopup(PyFrameAccessor debugProcess, PyDebugValue debugValue) {
50
51   }
52 }