Example usage for com.google.gwt.uibinder.rebind UiBinderWriter die

List of usage examples for com.google.gwt.uibinder.rebind UiBinderWriter die

Introduction

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

Prototype

public void die(String message, Object... params) throws UnableToCompleteException 

Source Link

Document

Post an error message and halt processing.

Usage

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

License:Apache License

@Override
public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {
    // parse as component first.  FIXME figure out the parser order on class hierarchy. should the superclass ones should parse first?
    super.parse(elem, fieldName, type, writer);

    handleBackwardsCompatibleMenu(elem, fieldName, writer);

    JClassType menuType = writer.getOracle().findType(GxtClassnameConstants.MENU);
    boolean foundSingleMenu = false;
    for (XMLElement child : elem.consumeChildElements()) {
        if (foundSingleMenu) {
            writer.die(elem, "Buttons only support a single Menu.  Found more than one.");
        }/*  www. j  a  v  a 2 s. c  o m*/

        JClassType childType = writer.findFieldType(child);
        if (!childType.isAssignableTo(menuType)) {
            writer.die(elem, "Buttons only support nested Menu Components.  Found %s.", child);
        }
        foundSingleMenu = true;

        String menu = writer.parseElementToField(child);
        writer.addStatement("%s.setMenu(%s);", fieldName, menu);
    }
}

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  w  w.  j a v a 2  s . 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

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  w  w  w .  ja  v a  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 w w  .j  a va  2  s. c  om
            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.form.SimpleComboBoxParser.java

License:Apache License

private String parseChildElement(XMLElement elem, JClassType valueType, UiBinderWriter writer)
        throws UnableToCompleteException {
    if ("value".equals(elem.getLocalName())) {
        return String.format("\"%s\"",
                elem.consumeInnerTextEscapedAsHtmlStringLiteral(new TextInterpreter(writer)));
    } else if ("item".equals(elem.getLocalName())) {
        return elem.consumeRequiredAttribute("value", valueType);
    }//from   w  w  w .j  a  v a 2  s.  co m

    writer.die(elem, "Unknown child element of SimpleComboBox");

    return null; // will never get here
}

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

License:Apache License

@Override
public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {
    JClassType listStoreType = writer.getOracle().findType(GxtClassnameConstants.LISTSTORE);
    String store = elem.consumeAttribute("store", listStoreType);

    if (store == null) {
        writer.die(elem, "Attribute 'store' is required");
    }/*from  w  w w.ja v  a  2 s .  c  o m*/

    // have to set the following fields to null temporarily.  
    // Due to the order of operations added, we need to construct
    // all ColumnConfigs before constructing a ColumnModel.
    writer.setFieldInitializer(fieldName, "null");
    // new ColumnModel(columnConfig)
    String columnModel = writer.declareField(GxtClassnameConstants.COLUMNMODEL, elem);
    writer.setFieldInitializer(columnModel, "null");

    JClassType arrayListType = writer.getOracle().findType(ArrayList.class.getName());
    JClassType columnConfigType = writer.getOracle().findType(GxtClassnameConstants.COLUMNCONFIG);
    JParameterizedType parameterizedArrayListType = writer.getOracle()
            .getParameterizedType(arrayListType.isGenericType(), new JClassType[] { columnConfigType });

    Map<String, JType> columnConfigSetterTypes = fetchColumnConfigProperties(columnConfigType);

    // List<ColumnConfig>
    String columnConfigList = writer.declareField(List.class.getName(), elem);
    writer.setFieldInitializerAsConstructor(columnConfigList, parameterizedArrayListType);

    for (XMLElement child : elem.consumeChildElements()) {
        if (!elem.getPrefix().equals(child.getPrefix())) {
            writer.die(child, "Child node of %s must use the same prefix.  Expecting %s, but found %s", elem,
                    elem.getPrefix(), child.getPrefix());
        }

        if (!"column".equals(child.getLocalName())) {
            writer.die(child, "Only <%s:column> children are allowed. Found %s.", elem.getPrefix(), child);
        }

        String columnConfig = writer.declareField(GxtClassnameConstants.COLUMNCONFIG, elem);

        applyColumnConfigProperties(writer, columnConfigSetterTypes, child, columnConfig);

        writer.addStatement("%s.add(%s);", columnConfigList, columnConfig);
    }

    // now that we have all ColumnConfigs created and added to list, we can now
    // construct the ColumnModel and Grid
    writer.addStatement("%s = new %s(%s);", columnModel, GxtClassnameConstants.COLUMNMODEL, columnConfigList);
    writer.addStatement("%s = new %s(%s, %s);", fieldName, type.getQualifiedSourceName(), store, columnModel);
}

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

License:Apache License

protected void handleLayoutData(XMLElement layoutDataElem, String fieldName, UiBinderWriter writer)
        throws UnableToCompleteException {
    XMLAttribute typeAttribute = layoutDataElem.getAttribute("type");
    if (typeAttribute != null) {
        String layoutDataField = LayoutDataFieldFactory.declareField(layoutDataElem,
                typeAttribute.consumeRawValue(), writer);

        for (XMLElement child : layoutDataElem.consumeChildElements()) {
            String childField = writer.parseElementToField(child);
            writer.addStatement("%s.add(%s, %s);", fieldName, childField, layoutDataField);
        }/*from  w  ww.  ja va 2  s.c om*/
    } else {
        writer.die(layoutDataElem, "layoutdata missing type attribute");
    }
}

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

License:Apache License

public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer)
        throws UnableToCompleteException {
    boolean found = false;
    for (XMLElement child : elem.consumeChildElements()) {
        if (found) {
            writer.die(elem, "element only supports 0 or 1 child elements.");
        }/* w  ww. j a v  a  2s . c o m*/
        found = true;

        JClassType menuType = writer.getOracle().findType(GxtClassnameConstants.MENU);
        JClassType childType = writer.findFieldType(child);
        if (!menuType.isAssignableFrom(childType)) {
            writer.die(child, "%s only supports children type Menu", elem.getLocalName());
        }

        String menuVarName = writer.parseElementToField(child);
        writer.addStatement("%s.setSubMenu(%s);", fieldName, menuVarName);
    }
}