List of usage examples for com.google.gwt.uibinder.rebind UiBinderWriter die
public void die(String message, Object... params) 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."); }/* 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); } }