use of com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider in project intellij-community by JetBrains.
the class XDebuggerEvaluateActionHandler method perform.
@Override
protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) {
final XDebuggerEditorsProvider editorsProvider = session.getDebugProcess().getEditorsProvider();
final XStackFrame stackFrame = session.getCurrentStackFrame();
final XDebuggerEvaluator evaluator = session.getDebugProcess().getEvaluator();
if (evaluator == null) {
return;
}
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
EvaluationMode mode = EvaluationMode.EXPRESSION;
String selectedText = editor != null ? editor.getSelectionModel().getSelectedText() : null;
if (selectedText != null) {
selectedText = evaluator.formatTextForEvaluation(selectedText);
mode = evaluator.getEvaluationMode(selectedText, editor.getSelectionModel().getSelectionStart(), editor.getSelectionModel().getSelectionEnd(), CommonDataKeys.PSI_FILE.getData(dataContext));
}
Promise<String> expressionTextPromise = Promise.resolve(selectedText);
if (selectedText == null && editor != null) {
expressionTextPromise = getExpressionText(evaluator, CommonDataKeys.PROJECT.getData(dataContext), editor);
}
final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(dataContext);
EvaluationMode finalMode = mode;
XValue value = XDebuggerTreeActionBase.getSelectedValue(dataContext);
expressionTextPromise.done(expressionText -> {
if (expressionText == null && value != null) {
value.calculateEvaluationExpression().done(expression -> {
if (expression != null) {
AppUIUtil.invokeOnEdt(() -> showDialog(session, file, editorsProvider, stackFrame, evaluator, expression));
}
});
} else {
XExpression expression = XExpressionImpl.fromText(StringUtil.notNullize(expressionText), finalMode);
AppUIUtil.invokeOnEdt(() -> showDialog(session, file, editorsProvider, stackFrame, evaluator, expression));
}
});
}
use of com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider in project google-cloud-intellij by GoogleCloudPlatform.
the class BreakpointConfigurationPanel method loadFrom.
@Override
public void loadFrom(@NotNull XLineBreakpoint<CloudLineBreakpointProperties> breakpoint) {
XBreakpointBase lineBreakpointImpl = breakpoint instanceof XBreakpointBase ? (XBreakpointBase) breakpoint : null;
Breakpoint javaBreakpoint = BreakpointManager.getJavaBreakpoint(breakpoint);
CloudLineBreakpointType.CloudLineBreakpoint cloudBreakpoint = null;
if (javaBreakpoint instanceof CloudLineBreakpointType.CloudLineBreakpoint) {
cloudBreakpoint = (CloudLineBreakpointType.CloudLineBreakpoint) javaBreakpoint;
}
if (cloudBreakpoint == null || lineBreakpointImpl == null) {
return;
}
XDebuggerEditorsProvider debuggerEditorsProvider = cloudLineBreakpointType.getEditorsProvider(breakpoint, cloudBreakpoint.getProject());
if (debuggerEditorsProvider != null) {
treePanel = new XDebuggerTreePanel(cloudBreakpoint.getProject(), debuggerEditorsProvider, this, breakpoint.getSourcePosition(), "GoogleCloudTools.BreakpointWatchContextMenu", null);
List<XExpression> watches = new ArrayList<XExpression>();
for (String watchExpression : breakpoint.getProperties().getWatchExpressions()) {
watches.add(debuggerEditorsProvider.createExpression(((XBreakpointBase) breakpoint).getProject(), new DocumentImpl(watchExpression), getFileTypeLanguage(breakpoint), EvaluationMode.EXPRESSION));
}
rootNode = new WatchesRootNode(treePanel.getTree(), this, watches.toArray(new XExpression[watches.size()]));
treePanel.getTree().setRoot(rootNode, false);
watchPanel.removeAll();
watchPanel.add(watchLabel, BorderLayout.NORTH);
treePanel.getTree().getEmptyText().setText("There are no custom watches for this snapshot location.");
final ToolbarDecorator decorator = ToolbarDecorator.createDecorator(treePanel.getTree()).disableUpDownActions();
decorator.setToolbarPosition(ActionToolbarPosition.RIGHT);
decorator.setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
executeAction(XDebuggerActions.XNEW_WATCH);
}
});
decorator.setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
executeAction(XDebuggerActions.XREMOVE_WATCH);
}
});
CustomLineBorder border = new CustomLineBorder(CaptionPanel.CNT_ACTIVE_BORDER_COLOR, SystemInfo.isMac ? 1 : 0, 0, SystemInfo.isMac ? 0 : 1, 0);
decorator.setToolbarBorder(border);
watchPanel.add(decorator.createPanel(), BorderLayout.CENTER);
}
}
Aggregations