Search in sources :

Example 21 with XValueChildrenList

use of com.intellij.xdebugger.frame.XValueChildrenList in project Perl5-IDEA by Camelcade.

the class PerlStackFrame method computeChildren.

@Override
public void computeChildren(@NotNull XCompositeNode node) {
    PerlValueDescriptor[] lexicals = myFrameDescriptor.getLexicals();
    PerlValueDescriptor[] globals = myFrameDescriptor.getGlobals();
    PerlValueDescriptor[] args = myFrameDescriptor.getArgs();
    int mainSize = myFrameDescriptor.getMainSize();
    boolean fallback = true;
    XValueChildrenList list = new XValueChildrenList();
    if (globals != null && globals.length > 0) {
        list.addTopGroup(new PerlXValueGroup("Global variables", "our", PerlIcons.OUR_GUTTER_ICON, globals, this, false));
        fallback = false;
    }
    if (mainSize > 0) {
        list.addTopGroup(new PerlXMainGroup(this, mainSize));
        fallback = false;
    }
    if (args != null && args.length > 0) {
        list.addTopGroup(new PerlXValueGroup("Arguments", null, PerlIcons.ARGS_GUTTER_ICON, args, this, true));
        fallback = false;
    }
    if (lexicals != null && lexicals.length > 0) {
        list.addTopGroup(new PerlXValueGroup("Lexical variables", "my/state", PerlIcons.MY_GUTTER_ICON, lexicals, this, true));
        fallback = false;
    }
    if (fallback) {
        super.computeChildren(node);
    } else {
        node.addChildren(list, true);
    }
}
Also used : XValueChildrenList(com.intellij.xdebugger.frame.XValueChildrenList) PerlXMainGroup(com.perl5.lang.perl.idea.run.debugger.values.PerlXMainGroup) PerlXValueGroup(com.perl5.lang.perl.idea.run.debugger.values.PerlXValueGroup)

Example 22 with XValueChildrenList

use of com.intellij.xdebugger.frame.XValueChildrenList in project Perl5-IDEA by Camelcade.

the class PerlXValueGroup method computeChildren.

@Override
public void computeChildren(@NotNull XCompositeNode node) {
    if (myVariables.length == 0) {
        super.computeChildren(node);
    } else {
        XValueChildrenList list = new XValueChildrenList();
        for (PerlValueDescriptor descriptor : myVariables) {
            list.add(new PerlXNamedValue(descriptor, myStackFrame));
        }
        node.setAlreadySorted(true);
        node.addChildren(list, true);
    }
}
Also used : XValueChildrenList(com.intellij.xdebugger.frame.XValueChildrenList) PerlValueDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor)

Example 23 with XValueChildrenList

use of com.intellij.xdebugger.frame.XValueChildrenList in project Perl5-IDEA by Camelcade.

the class PerlDebugUtil method requestAndComputeChildren.

public static void requestAndComputeChildren(@NotNull final XCompositeNode node, final PerlStackFrame perlStackFrame, final int[] offset, final int size, String key) {
    PerlDebugThread thread = perlStackFrame.getPerlExecutionStack().getSuspendContext().getDebugThread();
    final int frameSize = XCompositeNode.MAX_CHILDREN_TO_SHOW;
    thread.sendCommandAndGetResponse("getchildren", new PerlValueRequestDescriptor(offset[0], frameSize, key), new PerlDebuggingTransactionHandler() {

        @Override
        public void run(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) {
            PerlValueDescriptor[] descriptors = jsonDeserializationContext.deserialize(jsonObject.getAsJsonArray("data"), PerlValueDescriptor[].class);
            XValueChildrenList list = new XValueChildrenList();
            for (PerlValueDescriptor descriptor : descriptors) {
                list.add(new PerlXNamedValue(descriptor, perlStackFrame));
                offset[0]++;
            }
            boolean isLast = offset[0] >= size;
            node.addChildren(list, isLast);
            if (!isLast) {
                node.tooManyChildren(size - offset[0]);
            }
        }
    });
}
Also used : XValueChildrenList(com.intellij.xdebugger.frame.XValueChildrenList) PerlValueRequestDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueRequestDescriptor) JsonDeserializationContext(com.google.gson.JsonDeserializationContext) PerlValueDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor) PerlDebuggingTransactionHandler(com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingTransactionHandler) PerlDebugThread(com.perl5.lang.perl.idea.run.debugger.PerlDebugThread) JsonObject(com.google.gson.JsonObject) PerlXNamedValue(com.perl5.lang.perl.idea.run.debugger.values.PerlXNamedValue) PerlDebuggingEventBreakpoint(com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingEventBreakpoint) XLineBreakpoint(com.intellij.xdebugger.breakpoints.XLineBreakpoint)

Aggregations

XValueChildrenList (com.intellij.xdebugger.frame.XValueChildrenList)23 Variable (org.ballerinalang.plugins.idea.debugger.dto.Variable)3 PerlValueDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor)2 DlvApi (com.goide.dlv.protocol.DlvApi)1 Variable (com.google.api.services.clouddebugger.v2.model.Variable)1 JsonDeserializationContext (com.google.gson.JsonDeserializationContext)1 JsonObject (com.google.gson.JsonObject)1 Project (com.intellij.openapi.project.Project)1 XLineBreakpoint (com.intellij.xdebugger.breakpoints.XLineBreakpoint)1 XValue (com.intellij.xdebugger.frame.XValue)1 PyDebugValue (com.jetbrains.python.debugger.PyDebugValue)1 PerlDebugThread (com.perl5.lang.perl.idea.run.debugger.PerlDebugThread)1 PerlDebuggingEventBreakpoint (com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingEventBreakpoint)1 PerlDebuggingTransactionHandler (com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingTransactionHandler)1 PerlValueRequestDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueRequestDescriptor)1 PerlXMainGroup (com.perl5.lang.perl.idea.run.debugger.values.PerlXMainGroup)1 PerlXNamedValue (com.perl5.lang.perl.idea.run.debugger.values.PerlXNamedValue)1 PerlXValueGroup (com.perl5.lang.perl.idea.run.debugger.values.PerlXValueGroup)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1