Search in sources :

Example 1 with PerlValueDescriptor

use of com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor 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 2 with PerlValueDescriptor

use of com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor in project Perl5-IDEA by Camelcade.

the class PerlXNamedValue method computeChildren.

@Override
public void computeChildren(@NotNull XCompositeNode node) {
    boolean isExpandable = myPerlValueDescriptor.isExpandable();
    PerlLayersDescriptor layers = myPerlValueDescriptor.getLayers();
    PerlValueDescriptor tiedWith = myPerlValueDescriptor.getTiedWith();
    if (!isExpandable && layers == null && tiedWith == null || StringUtil.isEmpty(myPerlValueDescriptor.getKey())) {
        super.computeChildren(node);
    }
    XValueChildrenList childrenList = new XValueChildrenList();
    if (layers != null) {
        childrenList.add(new PerlXLayersNamedValue(layers));
    }
    if (tiedWith != null) {
        childrenList.addTopGroup(new PerlTiedNamedValue(tiedWith, myStackFrame));
    }
    node.addChildren(childrenList, !isExpandable);
    if (isExpandable) {
        PerlDebugUtil.requestAndComputeChildren(node, myStackFrame, offset, myPerlValueDescriptor.getSize(), myPerlValueDescriptor.getKey());
    }
}
Also used : PerlLayersDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlLayersDescriptor) PerlValueDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor)

Example 3 with PerlValueDescriptor

use of com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor 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 4 with PerlValueDescriptor

use of com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor 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)3 PerlValueDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor)3 JsonDeserializationContext (com.google.gson.JsonDeserializationContext)1 JsonObject (com.google.gson.JsonObject)1 XLineBreakpoint (com.intellij.xdebugger.breakpoints.XLineBreakpoint)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 PerlLayersDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlLayersDescriptor)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