private void setLayout(Container host, Element e) {
        GroupLayout gl = new GroupLayout(host);
        setProperties(gl, e);
        host.setLayout(gl);
        List<Element> groups = DocumentUtils.getChildElements(e, "group");
        gl.setHorizontalGroup(createGroup(gl, groups.get(0)));
        gl.setVerticalGroup(createGroup(gl, groups.get(1)));
        for (Element link : DocumentUtils.getChildElements(e, "link")) {
            Integer axis = evaluate(
                    DocumentUtils.getAttribute(link, "axis"), Integer.class, null);
            List<JComponent> components = new ArrayList<>();
            for (String ref : StringUtils.split(
                    DocumentUtils.getAttribute(link, "components"), ",", true)) {
                components.add((JComponent) objectMap.get(ref));
            }
            if (axis == null) {
                gl.linkSize(components.toArray(new JComponent[components.size()]));
            } else {
                gl.linkSize(axis, components.toArray(new JComponent[components.size()]));
            }
        }
    }