use of com.intellij.xdebugger.frame.presentation.XValuePresentation in project go-lang-idea-plugin by go-lang-plugin-org.
the class DlvXValue method computePresentation.
@Override
public void computePresentation(@NotNull XValueNode node, @NotNull XValuePlace place) {
XValuePresentation presentation = getPresentation();
boolean hasChildren = myVariable.children.length > 0;
node.setPresentation(myIcon, presentation, hasChildren);
}
use of com.intellij.xdebugger.frame.presentation.XValuePresentation in project go-lang-idea-plugin by go-lang-plugin-org.
the class DlvXValue method getPresentation.
@NotNull
private XValuePresentation getPresentation() {
String value = myVariable.value;
if (myVariable.isNumber())
return new XNumericValuePresentation(value);
if (myVariable.isString())
return new XStringValuePresentation(value);
if (myVariable.isBool()) {
return new XValuePresentation() {
@Override
public void renderValue(@NotNull XValueTextRenderer renderer) {
renderer.renderValue(value);
}
};
}
String type = myVariable.type;
boolean isSlice = myVariable.isSlice();
boolean isArray = myVariable.isArray();
if (isSlice || isArray) {
return new XRegularValuePresentation("len:" + myVariable.len + (isSlice ? ", cap:" + myVariable.cap : ""), type.replaceFirst("struct ", ""));
}
String prefix = myVariable.type + " ";
return new XRegularValuePresentation(StringUtil.startsWith(value, prefix) ? value.replaceFirst(Pattern.quote(prefix), "") : value, type);
}
use of com.intellij.xdebugger.frame.presentation.XValuePresentation in project intellij-community by JetBrains.
the class JavaValue method computePresentation.
@Override
public void computePresentation(@NotNull final XValueNode node, @NotNull XValuePlace place) {
final SuspendContextImpl suspendContext = myEvaluationContext.getSuspendContext();
myEvaluationContext.getManagerThread().schedule(new SuspendContextCommandImpl(suspendContext) {
@Override
public Priority getPriority() {
return Priority.NORMAL;
}
@Override
protected void commandCancelled() {
node.setPresentation(null, new XErrorValuePresentation(DebuggerBundle.message("error.context.has.changed")), false);
}
@Override
public void contextAction() throws Exception {
if (node.isObsolete()) {
return;
}
if (!myContextSet) {
myValueDescriptor.setContext(myEvaluationContext);
}
myValueDescriptor.updateRepresentation(myEvaluationContext, new DescriptorLabelListener() {
@Override
public void labelChanged() {
Icon nodeIcon = DebuggerTreeRenderer.getValueIcon(myValueDescriptor);
final String value = getValueString();
@SuppressWarnings("ThrowableResultOfMethodCallIgnored") EvaluateException exception = myValueDescriptor.getEvaluateException();
XValuePresentation presentation = new JavaValuePresentation(value, myValueDescriptor.getIdLabel(), exception != null ? exception.getMessage() : null, myValueDescriptor);
if (myValueDescriptor.getLastRenderer() instanceof FullValueEvaluatorProvider) {
XFullValueEvaluator evaluator = ((FullValueEvaluatorProvider) myValueDescriptor.getLastRenderer()).getFullValueEvaluator(myEvaluationContext, myValueDescriptor);
if (evaluator != null) {
node.setFullValueEvaluator(evaluator);
}
} else if (value.length() > XValueNode.MAX_VALUE_LENGTH) {
node.setFullValueEvaluator(new JavaFullValueEvaluator(myEvaluationContext) {
@Override
public void evaluate(@NotNull final XFullValueEvaluationCallback callback) {
final ValueDescriptorImpl fullValueDescriptor = myValueDescriptor.getFullValueDescriptor();
fullValueDescriptor.updateRepresentation(myEvaluationContext, new DescriptorLabelListener() {
@Override
public void labelChanged() {
callback.evaluated(fullValueDescriptor.getValueText());
}
});
}
});
}
node.setPresentation(nodeIcon, presentation, myValueDescriptor.isExpandable());
}
});
}
});
}
use of com.intellij.xdebugger.frame.presentation.XValuePresentation in project intellij-community by JetBrains.
the class XValueHint method evaluateAndShowHint.
@Override
protected void evaluateAndShowHint() {
myEvaluator.evaluate(myExpression, new XEvaluationCallbackBase() {
@Override
public void evaluated(@NotNull final XValue result) {
result.computePresentation(new XValueNodePresentationConfigurator.ConfigurableXValueNodeImpl() {
private XFullValueEvaluator myFullValueEvaluator;
private boolean myShown = false;
@Override
public void applyPresentation(@Nullable Icon icon, @NotNull XValuePresentation valuePresenter, boolean hasChildren) {
if (isHintHidden()) {
return;
}
SimpleColoredText text = new SimpleColoredText();
text.append(StringUtil.trimMiddle(myValueName, 200), XDebuggerUIConstants.VALUE_NAME_ATTRIBUTES);
XValueNodeImpl.buildText(valuePresenter, text);
if (!hasChildren) {
SimpleColoredComponent component = HintUtil.createInformationComponent();
text.appendToComponent(component);
if (myFullValueEvaluator != null) {
component.append(myFullValueEvaluator.getLinkText(), XDebuggerTreeNodeHyperlink.TEXT_ATTRIBUTES, (Consumer<MouseEvent>) event -> DebuggerUIUtil.showValuePopup(myFullValueEvaluator, event, getProject(), getEditor()));
LinkMouseListenerBase.installSingleTagOn(component);
}
showHint(component);
} else if (getType() == ValueHintType.MOUSE_CLICK_HINT) {
if (!myShown) {
showTree(result);
}
} else {
if (getType() == ValueHintType.MOUSE_OVER_HINT) {
text.insert(0, "(" + KeymapUtil.getFirstKeyboardShortcutText("ShowErrorDescription") + ") ", SimpleTextAttributes.GRAYED_ATTRIBUTES);
}
JComponent component = createExpandableHintComponent(text, () -> showTree(result));
showHint(component);
}
myShown = true;
}
@Override
public void setFullValueEvaluator(@NotNull XFullValueEvaluator fullValueEvaluator) {
myFullValueEvaluator = fullValueEvaluator;
}
@Override
public boolean isObsolete() {
return isHintHidden();
}
}, XValuePlace.TOOLTIP);
}
@Override
public void errorOccurred(@NotNull final String errorMessage) {
if (getType() == ValueHintType.MOUSE_CLICK_HINT) {
ApplicationManager.getApplication().invokeLater(() -> showHint(HintUtil.createErrorLabel(errorMessage)));
}
LOG.debug("Cannot evaluate '" + myExpression + "':" + errorMessage);
}
}, myExpressionPosition);
}
use of com.intellij.xdebugger.frame.presentation.XValuePresentation in project intellij-elixir by KronicDeth.
the class ElixirArrayXValueBase method computePresentation.
@Override
public final void computePresentation(@NotNull XValueNode node, @NotNull XValuePlace place) {
XValuePresentation presentation = getPresentation(node, place);
if (presentation != null) {
node.setPresentation(getIcon(), presentation, hasChildren());
} else {
String repr = getStringRepr();
if (repr.length() > XValueNode.MAX_VALUE_LENGTH) {
node.setFullValueEvaluator(new ImmediateFullValueEvaluator(repr));
repr = repr.substring(0, XValueNode.MAX_VALUE_LENGTH - 3) + "...";
}
node.setPresentation(getIcon(), getType(), repr, hasChildren());
}
}
Aggregations