List of usage examples for com.google.gwt.uibinder.rebind XMLElement consumeChildElements
public Collection<XMLElement> consumeChildElements(Interpreter<Boolean> interpreter) throws UnableToCompleteException
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; }