Example usage for com.google.gwt.uibinder.rebind XMLElement consumeChildElements

List of usage examples for com.google.gwt.uibinder.rebind XMLElement consumeChildElements

Introduction

In this page you can find the example usage for com.google.gwt.uibinder.rebind XMLElement consumeChildElements.

Prototype

public Collection<XMLElement> consumeChildElements(Interpreter<Boolean> interpreter)
        throws UnableToCompleteException 

Source Link

Document

Consumes and returns all child elements selected by the interpreter.

Usage

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.button.ButtonParser.java

License:Apache License

@Deprecated
private void handleBackwardsCompatibleMenu(XMLElement elem, String fieldName, UiBinderWriter writer)
        throws UnableToCompleteException {
    Interpreter<Boolean> menuInterpreter = new SimpleInterpreter(elem.getNamespaceUri(), "menu");

    Collection<XMLElement> menuChildElements = elem.consumeChildElements(menuInterpreter);
    if (menuChildElements.isEmpty()) {
        return;//from w ww .  j  a va2s .c om
    }
    writer.warn(elem,
            "Use of <%s:menu> has been deprecated.  Nesting a Menu widget is the new preferred approach.",
            elem.getPrefix());
    if (menuChildElements.size() > 1) {
        writer.die(elem, "Buttons can contain only a single menu.");
    }

    String menu = writer.declareField(GxtClassnameConstants.MENU, elem);

    XMLElement menuNode = menuChildElements.iterator().next();
    for (XMLElement child : menuNode.consumeChildElements()) {
        String childField = writer.parseElementToField(child);
        writer.addStatement("%s.add(%s);", menu, childField);
    }

    writer.addStatement("%s.setMenu(%s);", fieldName, menu);
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.ComponentParser.java

License:Apache License

/**
 * FIXME - only works for String value's
 * //www.ja v  a2 s.co m
 * @param elem
 * @param fieldName
 * @param writer
 */
private void consumeDataChildren(XMLElement elem, String fieldName, UiBinderWriter writer)
        throws UnableToCompleteException {
    Interpreter<Boolean> interpreter = new SimpleInterpreter(elem.getNamespaceUri(), "data");
    JClassType stringType = writer.getOracle().findType("java.lang.String");

    for (XMLElement child : elem.consumeChildElements(interpreter)) {
        String key = child.consumeRequiredAttribute("key", stringType);
        String value = child.consumeRequiredAttribute("value", stringType);

        writer.addStatement("%s.setData(%s, %s);", fieldName, key, value);
    }
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.ComponentParser.java

License:Apache License

protected void handleToolTips(XMLElement elem, String fieldName, UiBinderWriter writer)
        throws UnableToCompleteException {
    Interpreter<Boolean> toolTipConfigInterpreter = new SimpleInterpreter(elem.getNamespaceUri(),
            "tooltipconfig");
    Collection<XMLElement> toolTipConfigs = elem.consumeChildElements(toolTipConfigInterpreter);
    if (toolTipConfigs.isEmpty())
        return;//from www . j a  va 2  s  .  com
    if (toolTipConfigs.size() > 1) {
        writer.die(elem, "tooltipconfig can only be used once");
    }

    XMLElement toolTipConfigElem = toolTipConfigs.iterator().next();

    String toolTipConfig = writer.declareField(GxtClassnameConstants.TOOLTIPCONFIG, toolTipConfigElem);

    JClassType toolTipConfigType = writer.getOracle().findType(GxtClassnameConstants.TOOLTIPCONFIG);
    ElementParserUtil.applyAttributes(toolTipConfigElem, toolTipConfig, toolTipConfigType, writer);

    writer.addStatement("%s.setToolTip(%s);", fieldName, toolTipConfig);
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.ContentPanelParser.java

License:Apache License

public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {
    handleTopBottomComponents(elem, fieldName, writer);

    for (XMLElement buttonsElem : elem
            .consumeChildElements(new SimpleInterpreter(elem.getNamespaceUri(), "buttons"))) {
        for (XMLElement button : buttonsElem.consumeChildElements()) {
            if (!ElementParserUtil.isElementOfType(writer, button, GxtClassnameConstants.BUTTON)) {
                writer.die("Element buttons can only contain Button children.", elem);
            }/*from   w  ww  . ja va  2s.c  o  m*/
            String buttonField = writer.parseElementToField(button);
            writer.addStatement("%s.addButton(%s);", fieldName, buttonField);
        }
    }

    for (XMLElement header : elem
            .consumeChildElements(new SimpleInterpreter(elem.getNamespaceUri(), "header"))) {
        String headerFieldName = writer.declareField(GxtClassnameConstants.HEADER, header);
        // set to null at first.  assign with addStatement
        writer.setFieldInitializer(headerFieldName, "null");
        writer.addStatement("%s = %s.getHeader();", headerFieldName, fieldName);
        ElementParserUtil.applyAttributes(header, headerFieldName, GxtClassnameConstants.HEADER, writer);

        for (XMLElement headerChild : header.consumeChildElements()) {
            String childField = writer.parseElementToField(headerChild);
            writer.addStatement("%s.addTool(%s);", headerFieldName, childField);
        }
    }
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.ContentPanelParser.java

License:Apache License

protected void handleTopBottomComponents(XMLElement elem, String fieldName, UiBinderWriter writer)
        throws UnableToCompleteException {
    Interpreter<Boolean> topBottomComponentInterpreter = new TopBottomComponentInterpreter(
            elem.getNamespaceUri());//from   w w  w .j a  v  a  2s  .  c  om

    for (XMLElement child : elem.consumeChildElements(topBottomComponentInterpreter)) {
        XMLElement widget = child.consumeSingleChildElement();

        if (!isComponentElement(writer, widget)) {
            writer.die(elem, "%s must contain a GXT Component, but found %s", child, widget);
        }

        String widgetName = writer.parseElementToField(widget);
        String methodName = SupportedChildLocalNames.valueOf(child.getLocalName()).getMethodName();
        writer.addStatement("%s.%s(%s);", fieldName, methodName, widgetName);
    }
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.custom.PortalParser.java

License:Apache License

@Override
public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {
    JClassType integerType = writer.getOracle().findType("java.lang.Integer");

    JClassType doubleType = writer.getOracle().findType("java.lang.Double");

    String columnCountAttribute = elem.consumeRequiredAttribute("numColumns", integerType);
    Integer columnCount = Integer.valueOf(columnCountAttribute);

    Interpreter<Boolean> interpreter = new SimpleInterpreter(elem.getNamespaceUri(), "column");
    int columnIndex = 0;
    for (XMLElement column : elem.consumeChildElements(interpreter)) {
        String width = column.consumeAttribute("width", doubleType);
        if (width != null) {
            writer.addStatement("%s.setColumnWidth(%d, %s);", fieldName, columnIndex, width);
        }/*from w w  w .  ja  v  a2  s  .c  om*/

        for (XMLElement columnChild : column.consumeChildElements()) {
            String childField = writer.parseElementToField(columnChild);
            writer.addStatement("%s.add(%s, %d);", fieldName, childField, columnIndex);
        }

        columnIndex++;
    }

    if (columnIndex > columnCount) {
        writer.die(elem, "numColumns set to %s, but found %s", columnCountAttribute, columnIndex);
    }

    writer.setFieldInitializerAsConstructor(fieldName, type, "" + columnIndex);
}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.form.FormPanelParser.java

License:Apache License

@Override
public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {

    Interpreter<Boolean> formButtonBindingInterpreter = new SimpleInterpreter(elem.getNamespaceUri(),
            "formButtonBinding");
    for (XMLElement child : elem.consumeChildElements(formButtonBindingInterpreter)) {
        String buttonField = child.consumeRequiredRawAttribute("buttonField");

        String bindingField = writer.declareField(GxtClassnameConstants.FORMBUTTONBINDING, child);
        // set to null temporarily.  We'll initialize it as a statement. 
        //Need to make sure the FormPanel is initialized first.
        writer.setFieldInitializer(bindingField, "null");

        writer.addStatement("%s = new %s(%s);", bindingField, GxtClassnameConstants.FORMBUTTONBINDING,
                fieldName);//w  w  w  .j  a  va2s.c  om
        writer.addStatement("%s.addButton(%s);", bindingField, buttonField);
    }

}

From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.LayoutContainerParser.java

License:Apache License

private boolean consumeLayout(XMLElement elem, String layoutContainerFieldName, JClassType type,
        UiBinderWriter writer) throws UnableToCompleteException {
    boolean layoutFound = false;
    // locate child Element
    for (XMLElement layoutChild : elem
            .consumeChildElements(new SimpleInterpreter(elem.getNamespaceUri(), "layout"))) {
        if (layoutFound) {
            writer.die(elem,/*w w  w.j a  v a2 s  .  c o m*/
                    "LayoutContainer's and subclasses can contain only a single <%s:layout /> child.  Found multiple.",
                    elem.getPrefix());
        }

        String layoutType = layoutChild.consumeRequiredRawAttribute("type");

        LayoutParser layoutParser = LayoutParserFactory.findLayoutParserBySimpleName(elem, layoutType, writer);
        layoutParser.parse(layoutChild, elem, layoutContainerFieldName, type, writer);

        layoutFound = true;
    }

    // first, check attribute
    XMLAttribute layoutAttribute = elem.getAttribute("layout");
    if (layoutAttribute != null) {
        if (layoutFound) {
            writer.die(elem,
                    "LayoutContainer can contain either a layout attribute or a single nested <%s:layout /> child.  Not both.",
                    elem.getPrefix());
        }
        String layoutType = layoutAttribute.consumeRawValue();

        LayoutParser layoutParser = LayoutParserFactory.findLayoutParserBySimpleName(elem, layoutType, writer);
        layoutParser.parse(elem, layoutContainerFieldName, type, writer);
        layoutFound = true;
    }

    return layoutFound;
}