@Override public String interpretElement(XMLElement elem) throws UnableToCompleteException { if (!uiWriter.isWidgetElement(elem)) { return super.interpretElement(elem); } JClassType type = uiWriter.findFieldType(elem); TypeOracle oracle = uiWriter.getOracle(); MessagesWriter mw = uiWriter.getMessages(); String name = mw.consumeMessageAttribute("ph", elem); if ("".equals(name)) { name = "widget" + (++serial); } String idHolder = uiWriter.declareDomIdHolder(null); idToWidgetElement.put(idHolder, elem); if (oracle.findType(HasHTML.class.getName()).isAssignableFrom(type)) { return handleHasHTMLPlaceholder(elem, name, idHolder); } if (oracle.findType(HasText.class.getName()).isAssignableFrom(type)) { return handleHasTextPlaceholder(elem, name, idHolder); } return handleOpaqueWidgetPlaceholder(elem, name, idHolder); }
private void generateOnce( JClassType interfaceType, String implName, PrintWriter binderPrintWriter, TreeLogger treeLogger, TypeOracle oracle, ResourceOracle resourceOracle, PropertyOracle propertyOracle, PrintWriterManager writerManager, DesignTimeUtils designTime) throws UnableToCompleteException { MortalLogger logger = new MortalLogger(treeLogger); String templatePath = deduceTemplateFile(logger, interfaceType); MessagesWriter messages = new MessagesWriter( oracle, BINDER_URI, logger, templatePath, interfaceType.getPackage().getName(), implName); boolean useLazyWidgetBuilders = useLazyWidgetBuilders(logger, propertyOracle) && !designTime.isDesignTime(); FieldManager fieldManager = getFieldManager(oracle, logger, propertyOracle, useLazyWidgetBuilders); // MODIFICATION UiBinderWriter uiBinderWriter = new UiBinderWriter( interfaceType, implName, templatePath, oracle, logger, fieldManager, messages, designTime, uiBinderCtx, useSafeHtmlTemplates(logger, propertyOracle), useLazyWidgetBuilders, BINDER_URI); Document doc = getW3cDoc(logger, designTime, resourceOracle, templatePath); designTime.rememberPathForElements(doc); uiBinderWriter.parseDocument(doc, binderPrintWriter); if (messages.hasMessages()) { messages.write(writerManager.makePrintWriterFor(messages.getMessagesClassName())); } ImplicitClientBundle bundleClass = uiBinderWriter.getBundleClass(); new BundleWriter(bundleClass, writerManager, oracle, logger).write(); writerManager.commit(); }