List of usage examples for com.google.gwt.uibinder.rebind UiBinderWriter parseElementToField
public FieldWriter parseElementToField(XMLElement elem) throws UnableToCompleteException
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."); }//w w w . j a v a 2 s .c om 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 ww .j a v a 2 s . c o m*/ } 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.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 v a 2 s . co 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 www . j ava 2 s . c o m*/ 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); }// ww w .ja va 2 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.AdapterFieldParser.java
License:Apache License
@Override public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer) throws UnableToCompleteException { XMLElement childElement = elem.consumeSingleChildElement(); String childField = writer.parseElementToField(childElement); writer.setFieldInitializerAsConstructor(fieldName, type, childField); }
From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.form.CheckBoxGroupParser.java
License:Apache License
@Override public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer) throws UnableToCompleteException { for (XMLElement child : elem.consumeChildElements()) { if (!isValidElement(elem, child)) { writer.die(elem, "CheckBoxGroup can only contain CheckBox children, but found '%s'.", child); }//from ww w .j a v a 2 s . c om String childFieldName = writer.parseElementToField(child); writer.addStatement("%s.add(%s);", fieldName, childFieldName); } }
From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.form.RadioGroupParser.java
License:Apache License
@Override public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer) throws UnableToCompleteException { JClassType radioType = writer.getOracle().findType(GxtClassnameConstants.RADIO); for (XMLElement child : elem.consumeChildElements()) { JClassType childType = writer.findFieldType(child); if (!childType.isAssignableTo(radioType)) { writer.die(elem, "RadioGroup can only contain Radio children, but found '%s'.", child); }//from www. ja v a 2 s .c o m String childFieldName = writer.parseElementToField(child); writer.addStatement("%s.add(%s);", fieldName, childFieldName); } }
From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.form.SliderFieldParser.java
License:Apache License
@Override public void parse(XMLElement elem, String fieldName, JClassType type, UiBinderWriter writer) throws UnableToCompleteException { boolean seen = false; for (XMLElement child : elem.consumeChildElements()) { if (seen) { writer.die("SliderField can contain exactly one child element of type Slider."); }/*from ww w . j a v a 2 s . co m*/ // single child must be of type "Slider" String childField = writer.parseElementToField(child); writer.setFieldInitializerAsConstructor(fieldName, type, childField); seen = true; } }
From source file:com.jhickman.web.gwt.gxtuibinder.elementparsers.layout.GenericLayoutParser.java
License:Apache License
protected void handleChildren(XMLElement elem, String fieldName, UiBinderWriter writer) throws UnableToCompleteException { SimpleInterpreter layoutDataInterpreter = new SimpleInterpreter(elem.getNamespaceUri(), "layoutdata"); for (XMLElement child : elem.consumeChildElements()) { if (layoutDataInterpreter.interpretElement(child)) { handleLayoutData(child, fieldName, writer); } else {/*from w ww. j a v a 2 s. c o m*/ String childField = writer.parseElementToField(child); writer.addStatement("%s.add(%s);", fieldName, childField); } } }