debugger/swing_utils/src/main/com/thesett/aima/logic/fol/wam/debugger/swing/DesktopAppLayout.java
public void layoutContainer(Container parent)
    {
        // Get the available area to layout within.
        Insets insets = parent.getInsets();
        int maxWidth = parent.getWidth() - (insets.left + insets.right);
        int maxHeight = parent.getHeight() - (insets.top + insets.bottom);

        // Check which optional components are present.
        updatePresentComponentFlags();

        int centerHeight =
            maxHeight - ((hasConsole ? consoleHeight : 0) + (hasStatusBar ? DEFAULT_STATUS_BAR_HEIGHT : 0));
        int statusBarTop = centerHeight;
        int consoleTop = statusBarTop + DEFAULT_STATUS_BAR_HEIGHT;

        int centerLeft = (hasLeftPane ? leftPaneWidth : 0) + (hasLeftBar ? DEFAULT_VBAR_WIDTH : 0);
        int centerRight = maxWidth - (hasRightPane ? rightPaneWidth : 0) - (hasRightBar ? DEFAULT_VBAR_WIDTH : 0);
        int centerWidth = centerRight - centerLeft;

        int leftBarRight = centerLeft;
        int leftBarLeft = leftBarRight - DEFAULT_VBAR_WIDTH;
        int leftPaneRight = leftBarLeft;

        int rightBarLeft = centerRight;
        int rightPaneLeft = rightBarLeft + DEFAULT_VBAR_WIDTH;

        for (Component component : parent.getComponents())
        {
            String type = reverseMap.get(component);

            int left = 0;
            int top = 0;
            int width = maxWidth;
            int height = maxHeight;

            if (CENTER.equals(type))
            {
                left = centerLeft;
                width = centerWidth;
                height = centerHeight;
            }
            else if (STATUS_BAR.equals(type))
            {
                top = statusBarTop;
                height = DEFAULT_STATUS_BAR_HEIGHT;
            }
            else if (CONSOLE.equals(type))
            {
                top = consoleTop;
                height = consoleHeight;
            }
            else if (LEFT_PANE.equals(type))
            {
                width = leftPaneRight;
                height = centerHeight;
            }
            else if (LEFT_VERTICAL_BAR.equals(type))
            {
                left = leftBarLeft;
                width = DEFAULT_VBAR_WIDTH;
                height = centerHeight;
            }
            else if (RIGHT_VERTICAL_BAR.equals(type))
            {
                left = rightBarLeft;
                width = DEFAULT_VBAR_WIDTH;
                height = centerHeight;
            }
            else if (RIGHT_PANE.equals(type))
            {
                left = rightPaneLeft;
                width = rightPaneWidth;
                height = centerHeight;
            }

            component.setBounds(left, top, width, height);
        }
    }
public void layoutContainer(Container parent)
    {
        // Get the available area to layout within.
        Insets insets = parent.getInsets();
        int maxWidth = parent.getWidth() - (insets.left + insets.right);
        int maxHeight = parent.getHeight() - (insets.top + insets.bottom);

        // Check which optional components are present.
        updatePresentComponentFlags();

        int centerHeight =
            maxHeight - ((hasConsole ? consoleHeight : 0) + (hasStatusBar ? DEFAULT_STATUS_BAR_HEIGHT : 0));
        int statusBarTop = centerHeight;
        int consoleTop = statusBarTop + DEFAULT_STATUS_BAR_HEIGHT;

        int centerLeft = (hasLeftPane ? leftPaneWidth : 0) + (hasLeftBar ? DEFAULT_VBAR_WIDTH : 0);
        int centerRight = maxWidth - (hasRightPane ? rightPaneWidth : 0) - (hasRightBar ? DEFAULT_VBAR_WIDTH : 0);
        int centerWidth = centerRight - centerLeft;

        int leftBarRight = centerLeft;
        int leftBarLeft = leftBarRight - DEFAULT_VBAR_WIDTH;
        int leftPaneRight = leftBarLeft;

        int rightBarLeft = centerRight;
        int rightPaneLeft = rightBarLeft + DEFAULT_VBAR_WIDTH;

        for (Component component : parent.getComponents())
        {
            String type = reverseMap.get(component);

            int left = 0;
            int top = 0;
            int width = maxWidth;
            int height = maxHeight;

            if (CENTER.equals(type))
            {
                left = centerLeft;
                width = centerWidth;
                height = centerHeight;
            }
            else if (STATUS_BAR.equals(type))
            {
                top = statusBarTop;
                height = DEFAULT_STATUS_BAR_HEIGHT;
            }
            else if (CONSOLE.equals(type))
            {
                top = consoleTop;
                height = consoleHeight;
            }
            else if (LEFT_PANE.equals(type))
            {
                width = leftPaneRight;
                height = centerHeight;
            }
            else if (LEFT_VERTICAL_BAR.equals(type))
            {
                left = leftBarLeft;
                width = DEFAULT_VBAR_WIDTH;
                height = centerHeight;
            }
            else if (RIGHT_VERTICAL_BAR.equals(type))
            {
                left = rightBarLeft;
                width = DEFAULT_VBAR_WIDTH;
                height = centerHeight;
            }
            else if (RIGHT_PANE.equals(type))
            {
                left = rightPaneLeft;
                width = rightPaneWidth;
                height = centerHeight;
            }

            component.setBounds(left, top, width, height);
        }
    }
{@inheritDoc}