/** * Parse the document element and return the source of the Java class that * will implement its UiBinder. */ private String parseDocumentElement(XMLElement elem) throws UnableToCompleteException { FieldManager fieldManager = reflector.getField("fieldManager"); ImplicitClientBundle bundleClass = reflector.getField("bundleClass"); fieldManager .registerFieldOfGeneratedType( oracle.findType(ClientBundle.class.getName()), bundleClass .getPackageName(), bundleClass.getClassName(), bundleClass.getFieldName()); // Allow GWT.create() to init the field, the default behavior MessagesWriter messages = reflector.getField("messages"); String rootField = new CustomUiBinderParser(this, messages, fieldManager, oracle, bundleClass, binderUri, customResourceParsers).parse(elem); fieldManager.validate(); StringWriter stringWriter = new StringWriter(); IndentedWriter niceWriter = new IndentedWriter( new PrintWriter(stringWriter)); reflector.callMethod("writeBinder", new Class[]{IndentedWriter.class, String.class}, niceWriter, rootField); reflector.callMethod("ensureAttachmentCleanedUp", new Class[0]); return stringWriter.toString(); }
private void writeCssInjectors(IndentedWriter w) { for (ImplicitCssResource css : bundleClass.getCssMethods()) { w.write("%s.%s().ensureInjected();", bundleClass.getFieldName(), css.getName()); } w.newline(); }
private void writeBundleClass() { String packageName = bundleClass.getPackageName(); if (packageName.length() > 0) { writer.write("package %1$s;", packageName); bundleClass.getClassName()); writer.indent(); for (ImplicitCssResource css : bundleClass.getCssMethods()) { writeCssSource(css); writeCssImports(css); for (ImplicitDataResource data : bundleClass.getDataMethods()) { writer.write("@Source(\"%s\")", data.getSource()); writer.newline();
/** * Interprets <ui:data> elements. */ private void createData(XMLElement elem) throws UnableToCompleteException { String name = elem.consumeRequiredRawAttribute(FIELD_ATTRIBUTE); String source = elem.consumeRequiredRawAttribute(SOURCE_ATTRIBUTE); // doNotEmbed is optional on DataResource Boolean doNotEmbed = elem.consumeBooleanConstantAttribute(DO_NOT_EMBED_ATTRIBUTE); // mimeType is optional on DataResource String mimeType = elem.consumeRawAttribute(MIME_TYPE_ATTRIBUTE); ImplicitDataResource dataMethod = bundleClass.createDataResource( name, source, mimeType, doNotEmbed); FieldWriter field = fieldManager.registerField(dataResourceType, dataMethod.getName()); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), dataMethod.getName())); }
private void createStyle(XMLElement elem) throws UnableToCompleteException { String body = elem.consumeUnescapedInnerText(); String[] source = elem.consumeRawArrayAttribute(SOURCE_ATTRIBUTE); if (0 == body.length() && 0 == source.length) { writer.die(elem, "Must have either a src attribute or body text"); } String name = elem.consumeRawAttribute(FIELD_ATTRIBUTE, "style"); JClassType publicType = consumeCssResourceType(elem); String[] importTypeNames = elem.consumeRawArrayAttribute(IMPORT_ATTRIBUTE); LinkedHashSet<JClassType> importTypes = new LinkedHashSet<JClassType>(); for (String type : importTypeNames) { importTypes.add(findCssResourceType(elem, type)); } Boolean gss = elem.consumeBooleanConstantAttribute(GSS_ATTRIBUTE); ImplicitCssResource cssMethod = bundleClass.createCssResource(name, source, publicType, body, importTypes, gss, resourceOracle); FieldWriter field = fieldManager.registerFieldForGeneratedCssResource(cssMethod); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), cssMethod.getName())); }
/** * Interprets <ui:image> elements. */ private void createImage(XMLElement elem) throws UnableToCompleteException { String name = elem.consumeRequiredRawAttribute(FIELD_ATTRIBUTE); // @source is optional on ImageResource String source = elem.consumeRawAttribute(SOURCE_ATTRIBUTE, null); Boolean flipRtl = elem.consumeBooleanConstantAttribute(FLIP_RTL_ATTRIBUTE); RepeatStyle repeatStyle = null; if (elem.hasAttribute(REPEAT_STYLE_ATTRIBUTE)) { String value = elem.consumeRawAttribute(REPEAT_STYLE_ATTRIBUTE); try { repeatStyle = RepeatStyle.valueOf(value); } catch (IllegalArgumentException e) { writer.die(elem, "Bad repeatStyle value %s", value); } } ImplicitImageResource imageMethod = bundleClass.createImageResource(name, source, flipRtl, repeatStyle); FieldWriter field = fieldManager.registerField(imageResourceType, imageMethod.getName()); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), imageMethod.getName())); }
/** * Add call to {@code com.google.gwt.resources.client.CssResource#ensureInjected()} * on each CSS resource field. */ private void ensureInjectedCssFields() { for (ImplicitCssResource css : bundleClass.getCssMethods()) { String fieldName = css.getName(); FieldWriter cssField = fieldManager.require(fieldName); cssField.addStatement("%s.ensureInjected();", fieldName); } }
new ImplicitClientBundle(baseClass.getPackage().getName(), this.implClassName, CLIENT_BUNDLE_FIELD, logger); handlerEvaluator = new HandlerEvaluator(ownerClass, logger, oracle, useLazyWidgetBuilders);
public BundleWriter(ImplicitClientBundle bundleClass, PrintWriterManager writerManager, TypeOracle types, MortalLogger logger) { this.bundleClass = bundleClass; this.writer = new IndentedWriter( writerManager.makePrintWriterFor(bundleClass.getClassName())); this.writerManager = writerManager; this.types = types; this.logger = logger; clientBundleType = types.findType(ClientBundle.class.getName()); dataResourceType = types.findType(DataResource.class.getCanonicalName()); doNotEmbedType = types.findType(DoNotEmbed.class.getCanonicalName()); dataMimeTypeType = types.findType(MimeType.class.getCanonicalName()); imageOptionType = types.findType(ImageOptions.class.getCanonicalName()); imageResourceType = types.findType(ImageResource.class.getCanonicalName()); repeatStyleType = types.findType(RepeatStyle.class.getCanonicalName()); importAnnotationType = types.findType(Import.class.getCanonicalName()); }
private void writeImageMethods() { for (ImplicitImageResource image : bundleClass.getImageMethods()) { if (null != image.getSource()) { writer.write("@Source(\"%s\")", image.getSource()); } writeImageOptionsAnnotation(image.getFlipRtl(), image.getRepeatStyle()); writer.write("%s %s();", imageResourceType.getName(), image.getName()); } }
private void writeBundleClass() { String packageName = bundleClass.getPackageName(); if (packageName.length() > 0) { writer.write("package %1$s;", packageName); bundleClass.getClassName()); writer.indent(); for (ImplicitCssResource css : bundleClass.getCssMethods()) { writeCssSource(css); writeCssImports(css); for (ImplicitDataResource data : bundleClass.getDataMethods()) { writer.write("@Source(\"%s\")", data.getSource()); writer.newline();
/** * Interprets <ui:data> elements. */ private void createData(XMLElement elem) throws UnableToCompleteException { String name = elem.consumeRequiredRawAttribute(FIELD_ATTRIBUTE); String source = elem.consumeRequiredRawAttribute(SOURCE_ATTRIBUTE); // doNotEmbed is optional on DataResource Boolean doNotEmbed = elem.consumeBooleanConstantAttribute(DO_NOT_EMBED_ATTRIBUTE); // mimeType is optional on DataResource String mimeType = elem.consumeRawAttribute(MIME_TYPE_ATTRIBUTE); ImplicitDataResource dataMethod = bundleClass.createDataResource( name, source, mimeType, doNotEmbed); FieldWriter field = fieldManager.registerField(dataResourceType, dataMethod.getName()); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), dataMethod.getName())); }
private void createStyle(XMLElement elem) throws UnableToCompleteException { String body = elem.consumeUnescapedInnerText(); String[] source = elem.consumeRawArrayAttribute(SOURCE_ATTRIBUTE); if (0 == body.length() && 0 == source.length) { writer.die(elem, "Must have either a src attribute or body text"); } String name = elem.consumeRawAttribute(FIELD_ATTRIBUTE, "style"); JClassType publicType = consumeCssResourceType(elem); String[] importTypeNames = elem.consumeRawArrayAttribute(IMPORT_ATTRIBUTE); LinkedHashSet<JClassType> importTypes = new LinkedHashSet<JClassType>(); for (String type : importTypeNames) { importTypes.add(findCssResourceType(elem, type)); } Boolean gss = elem.consumeBooleanConstantAttribute(GSS_ATTRIBUTE); ImplicitCssResource cssMethod = bundleClass.createCssResource(name, source, publicType, body, importTypes, gss, resourceOracle); FieldWriter field = fieldManager.registerFieldForGeneratedCssResource(cssMethod); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), cssMethod.getName())); }
/** * Interprets <ui:image> elements. */ private void createImage(XMLElement elem) throws UnableToCompleteException { String name = elem.consumeRequiredRawAttribute(FIELD_ATTRIBUTE); // @source is optional on ImageResource String source = elem.consumeRawAttribute(SOURCE_ATTRIBUTE, null); Boolean flipRtl = elem.consumeBooleanConstantAttribute(FLIP_RTL_ATTRIBUTE); RepeatStyle repeatStyle = null; if (elem.hasAttribute(REPEAT_STYLE_ATTRIBUTE)) { String value = elem.consumeRawAttribute(REPEAT_STYLE_ATTRIBUTE); try { repeatStyle = RepeatStyle.valueOf(value); } catch (IllegalArgumentException e) { writer.die(elem, "Bad repeatStyle value %s", value); } } ImplicitImageResource imageMethod = bundleClass.createImageResource(name, source, flipRtl, repeatStyle); FieldWriter field = fieldManager.registerField(imageResourceType, imageMethod.getName()); field.setInitializer(String.format("%s.%s()", fieldManager.convertFieldToGetter(bundleClass.getFieldName()), imageMethod.getName())); }
/** * Add call to {@code com.google.gwt.resources.client.CssResource#ensureInjected()} * on each CSS resource field. */ private void ensureInjectedCssFields() { for (ImplicitCssResource css : bundleClass.getCssMethods()) { String fieldName = css.getName(); FieldWriter cssField = fieldManager.require(fieldName); cssField.addStatement("%s.ensureInjected();", fieldName); } }
new ImplicitClientBundle(baseClass.getPackage().getName(), this.implClassName, CLIENT_BUNDLE_FIELD, logger); handlerEvaluator = new HandlerEvaluator(ownerClass, logger, oracle, useLazyWidgetBuilders);
public BundleWriter(ImplicitClientBundle bundleClass, PrintWriterManager writerManager, TypeOracle types, MortalLogger logger) { this.bundleClass = bundleClass; this.writer = new IndentedWriter( writerManager.makePrintWriterFor(bundleClass.getClassName())); this.writerManager = writerManager; this.types = types; this.logger = logger; clientBundleType = types.findType(ClientBundle.class.getName()); dataResourceType = types.findType(DataResource.class.getCanonicalName()); doNotEmbedType = types.findType(DoNotEmbed.class.getCanonicalName()); dataMimeTypeType = types.findType(MimeType.class.getCanonicalName()); imageOptionType = types.findType(ImageOptions.class.getCanonicalName()); imageResourceType = types.findType(ImageResource.class.getCanonicalName()); repeatStyleType = types.findType(RepeatStyle.class.getCanonicalName()); importAnnotationType = types.findType(Import.class.getCanonicalName()); }
private void writeImageMethods() { for (ImplicitImageResource image : bundleClass.getImageMethods()) { if (null != image.getSource()) { writer.write("@Source(\"%s\")", image.getSource()); } writeImageOptionsAnnotation(image.getFlipRtl(), image.getRepeatStyle()); writer.write("%s %s();", imageResourceType.getName(), image.getName()); } }
/** * Parse the document element and return the source of the Java class that * will implement its UiBinder. */ private String parseDocumentElement(XMLElement elem) throws UnableToCompleteException { fieldManager.registerFieldOfGeneratedType(oracle.findType(ClientBundle.class.getName()), bundleClass.getPackageName(), bundleClass.getClassName(), bundleClass.getFieldName()); // Allow GWT.create() to init the field, the default behavior FieldWriter rootField = new UiBinderParser(this, messages, fieldManager, oracle, bundleClass, binderUri, uiBinderCtx, resourceOracle, gssOptions).parse(elem); fieldManager.validate(); StringWriter stringWriter = new StringWriter(); IndentedWriter niceWriter = new IndentedWriter(new PrintWriter(stringWriter)); if (isRenderer) { ensureInjectedCssFields(); writeRenderer(niceWriter, rootField); } else if (useLazyWidgetBuilders) { ensureInjectedCssFields(); writeBinderForRenderableStrategy(niceWriter, rootField); } else { writeBinder(niceWriter, rootField); } ensureAttachmentCleanedUp(); return stringWriter.toString(); }
private void writeCssInjectors(IndentedWriter w) { for (ImplicitCssResource css : bundleClass.getCssMethods()) { w.write("%s.%s().ensureInjected();", bundleClass.getFieldName(), css.getName()); } w.newline(); }