Search in sources :

Example 1 with DescriptorLabelListener

use of com.intellij.debugger.ui.tree.render.DescriptorLabelListener in project intellij-community by JetBrains.

the class DebuggerTreeNodeImpl method calcLabel.

public void calcLabel() {
    final DebuggerContextImpl context = getTree().getDebuggerContext();
    update(context, () -> getDescriptor().updateRepresentation(context.createEvaluationContext(), new DescriptorLabelListener() {

        @Override
        public void labelChanged() {
            updateCaches();
            DebuggerTreeNodeImpl.this.labelChanged();
        }
    }), true);
}
Also used : DebuggerContextImpl(com.intellij.debugger.impl.DebuggerContextImpl) DescriptorLabelListener(com.intellij.debugger.ui.tree.render.DescriptorLabelListener)

Example 2 with DescriptorLabelListener

use of com.intellij.debugger.ui.tree.render.DescriptorLabelListener in project intellij-community by JetBrains.

the class DebuggerTreeNodeImpl method createNode.

protected static DebuggerTreeNodeImpl createNode(DebuggerTree tree, NodeDescriptorImpl descriptor, EvaluationContextImpl evaluationContext) {
    final DebuggerTreeNodeImpl node = new DebuggerTreeNodeImpl(tree, descriptor);
    descriptor.updateRepresentationNoNotify(evaluationContext, new DescriptorLabelListener() {

        @Override
        public void labelChanged() {
            node.updateCaches();
            node.labelChanged();
        }
    });
    node.updateCaches();
    return node;
}
Also used : DescriptorLabelListener(com.intellij.debugger.ui.tree.render.DescriptorLabelListener)

Example 3 with DescriptorLabelListener

use of com.intellij.debugger.ui.tree.render.DescriptorLabelListener in project intellij-community by JetBrains.

the class DebuggerTreeNodeImpl method calcValue.

public void calcValue() {
    final DebuggerContextImpl context = getTree().getDebuggerContext();
    update(context, () -> {
        EvaluationContextImpl evaluationContext = context.createEvaluationContext();
        getDescriptor().setContext(evaluationContext);
        getDescriptor().updateRepresentation(evaluationContext, new DescriptorLabelListener() {

            @Override
            public void labelChanged() {
                updateCaches();
                DebuggerTreeNodeImpl.this.labelChanged();
            }
        });
        childrenChanged(true);
    }, false);
}
Also used : EvaluationContextImpl(com.intellij.debugger.engine.evaluation.EvaluationContextImpl) DebuggerContextImpl(com.intellij.debugger.impl.DebuggerContextImpl) DescriptorLabelListener(com.intellij.debugger.ui.tree.render.DescriptorLabelListener)

Example 4 with DescriptorLabelListener

use of com.intellij.debugger.ui.tree.render.DescriptorLabelListener in project intellij-community by JetBrains.

the class DebuggerTreeNodeImpl method calcRepresentation.

public void calcRepresentation() {
    final DebuggerContextImpl context = getTree().getDebuggerContext();
    update(context, () -> getDescriptor().updateRepresentation(context.createEvaluationContext(), new DescriptorLabelListener() {

        @Override
        public void labelChanged() {
            updateCaches();
            DebuggerTreeNodeImpl.this.labelChanged();
        }
    }), false);
}
Also used : DebuggerContextImpl(com.intellij.debugger.impl.DebuggerContextImpl) DescriptorLabelListener(com.intellij.debugger.ui.tree.render.DescriptorLabelListener)

Example 5 with DescriptorLabelListener

use of com.intellij.debugger.ui.tree.render.DescriptorLabelListener in project intellij-community by JetBrains.

the class ValueHint method evaluateAndShowHint.

@Override
protected void evaluateAndShowHint() {
    final DebuggerContextImpl debuggerContext = DebuggerManagerEx.getInstanceEx(getProject()).getContext();
    final DebuggerSession debuggerSession = debuggerContext.getDebuggerSession();
    if (debuggerSession == null || !debuggerSession.isPaused())
        return;
    try {
        final ExpressionEvaluator evaluator = getExpressionEvaluator(debuggerContext);
        if (evaluator == null)
            return;
        debuggerContext.getDebugProcess().getManagerThread().schedule(new DebuggerContextCommandImpl(debuggerContext) {

            @Override
            public Priority getPriority() {
                return Priority.HIGH;
            }

            @Override
            public void threadAction() {
                try {
                    final EvaluationContextImpl evaluationContext = debuggerContext.createEvaluationContext();
                    final String expressionText = ApplicationManager.getApplication().runReadAction(new Computable<String>() {

                        @Override
                        public String compute() {
                            return myCurrentExpression.getText();
                        }
                    });
                    final TextWithImports text = new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, expressionText);
                    final Value value = myValueToShow != null ? myValueToShow : evaluator.evaluate(evaluationContext);
                    final WatchItemDescriptor descriptor = new WatchItemDescriptor(getProject(), text, value);
                    if (!isActiveTooltipApplicable(value) || getType() == ValueHintType.MOUSE_OVER_HINT) {
                        if (getType() == ValueHintType.MOUSE_OVER_HINT) {
                            // force using default renderer for mouse over hint in order to not to call accidentally methods while rendering
                            // otherwise, if the hint is invoked explicitly, show it with the right "auto" renderer
                            descriptor.setRenderer(DebugProcessImpl.getDefaultRenderer(value));
                        }
                        descriptor.updateRepresentation(evaluationContext, new DescriptorLabelListener() {

                            @Override
                            public void labelChanged() {
                                if (getCurrentRange() != null) {
                                    if (getType() != ValueHintType.MOUSE_OVER_HINT || descriptor.isValueValid()) {
                                        final SimpleColoredText simpleColoredText = DebuggerTreeRenderer.getDescriptorText(debuggerContext, descriptor, true);
                                        if (isActiveTooltipApplicable(value)) {
                                            simpleColoredText.append(" (" + DebuggerBundle.message("active.tooltip.suggestion") + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES);
                                        }
                                        showHint(simpleColoredText, descriptor);
                                    }
                                }
                            }
                        });
                    } else {
                        createAndShowTree(expressionText, descriptor);
                    }
                } catch (EvaluateException e) {
                    LOG.debug(e);
                }
            }
        });
    } catch (EvaluateException e) {
        LOG.debug(e);
    }
}
Also used : SimpleColoredText(com.intellij.ui.SimpleColoredText) DescriptorLabelListener(com.intellij.debugger.ui.tree.render.DescriptorLabelListener) ExpressionEvaluator(com.intellij.debugger.engine.evaluation.expression.ExpressionEvaluator) WatchItemDescriptor(com.intellij.debugger.ui.impl.watch.WatchItemDescriptor) DebuggerSession(com.intellij.debugger.impl.DebuggerSession) PrimitiveValue(com.sun.jdi.PrimitiveValue) Value(com.sun.jdi.Value) DebuggerContextImpl(com.intellij.debugger.impl.DebuggerContextImpl) DebuggerContextCommandImpl(com.intellij.debugger.engine.events.DebuggerContextCommandImpl)

Aggregations

DescriptorLabelListener (com.intellij.debugger.ui.tree.render.DescriptorLabelListener)5 DebuggerContextImpl (com.intellij.debugger.impl.DebuggerContextImpl)4 EvaluationContextImpl (com.intellij.debugger.engine.evaluation.EvaluationContextImpl)1 ExpressionEvaluator (com.intellij.debugger.engine.evaluation.expression.ExpressionEvaluator)1 DebuggerContextCommandImpl (com.intellij.debugger.engine.events.DebuggerContextCommandImpl)1 DebuggerSession (com.intellij.debugger.impl.DebuggerSession)1 WatchItemDescriptor (com.intellij.debugger.ui.impl.watch.WatchItemDescriptor)1 SimpleColoredText (com.intellij.ui.SimpleColoredText)1 PrimitiveValue (com.sun.jdi.PrimitiveValue)1 Value (com.sun.jdi.Value)1