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

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

Introduction

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

Prototype

public void setFieldInitializer(String fieldName, String factoryMethod) 

Source Link

Document

Gives the writer the initializer to use for this field instead of the default GWT.create call.

Usage

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);
            }/*  w  w  w  .  j a v  a 2 s  .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.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);//from  ww w.  ja  va  2s  . c o  m
        writer.addStatement("%s.addButton(%s);", bindingField, buttonField);
    }

}

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 .j  a v  a 2  s.c om*/

    // 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);
}