public class

UiBinderWriter

extends Object
implements Statements
java.lang.Object
   ↳ com.google.gwt.uibinder.rebind.UiBinderWriter

Class Overview

Writer for UiBinder generated classes. TODO(rdamazio): Refactor this, extract model classes, improve ordering guarantees, etc. TODO(rjrjr): Line numbers in error messages.

Summary

[Expand]
Inherited Fields
From interface com.google.gwt.uibinder.rebind.Statements
Public Constructors
UiBinderWriter(JClassType baseClass, String implClassName, String templatePath, TypeOracle oracle, MortalLogger logger, FieldManager fieldManager, MessagesWriter messagesWriter, DesignTimeUtils designTime, UiBinderContext uiBinderCtx)
Public Methods
void addDetachStatement(String format, Object... args)
Add a statement to be executed right after the current attached element is detached.
void addInitStatement(String format, Object... params)
Add a statement to be run after everything has been instantiated, in the style of format(String, Object...).
void addStatement(String format, Object... args)
Adds a statement to the block run after fields are declared, in the style of format(String, Object...).
static String asCommaSeparatedList(String... args)
void beginAttachedSection(String element)
Begin a section where a new attachable element is being parsed--that is, one that will be constructed as a big innerHTML string, and then briefly attached to the dom to allow fields accessing its to be filled (at the moment, HasHTMLParser, HTMLPanelParser, and DomElementParser.).
String declareDomField(String fieldName)
Declare a field that will hold an Element instance.
String declareDomIdHolder()
Declare a variable that will be filled at runtime with a unique id, safe for use as a dom element's id attribute.
String declareField(String typeName, XMLElement elem)
Declares a field of the given type name, returning the name of the declared field.
String declareFieldIfNeeded(XMLElement elem)
If this element has a gwt:field attribute, create a field for it of the appropriate type, and return the field name.
String detokenate(String betokened)
Given a string containing tokens returned by tokenForExpression(String) or declareDomField(String), return a string with those tokens replaced by the appropriate expressions.
void die(String message)
Post an error message and halt processing.
void die(XMLElement context, String message, Object... params)
Post an error message about a specific XMLElement and halt processing.
void die(String message, Object... params)
Post an error message and halt processing.
void endAttachedSection()
End the current attachable section.
void ensureAttached()
Ensure that the specified element is attached to the DOM.
void ensureCurrentFieldAttached()
Ensure that the specified field is attached to the DOM.
static String escapeAttributeText(String text)
Escape text that will be part of a string literal to be interpreted at runtime as an HTML attribute value.
static String escapeText(String text, boolean preserveWhitespace)
Escape text that will be part of a string literal to be interpreted at runtime as HTML, optionally preserving whitespace.
static String escapeTextForJavaStringLiteral(String text)
Escape characters that would mess up interpretation of this string as a string literal in generated code (that is, protect \, \n and " ).
JClassType findFieldType(XMLElement elem)
Finds the JClassType that corresponds to this XMLElement, which must be a Widget or an Element.
void genPropertySet(String fieldName, String propName, String value)
Generates the code to set a property value (assumes that 'value' is a valid Java expression).
void genStringPropertySet(String fieldName, String propName, String value)
Generates the code to set a string property.
AttributeParser getBundleAttributeParser(XMLAttribute attribute)
This method is deprecated. exists only to support BundleAttributeParser, which will be leaving us soon.
ImplicitClientBundle getBundleClass()
DesignTimeUtils getDesignTime()
Returns the DesignTimeUtils, not null.
MortalLogger getLogger()
Returns the logger, at least until we get get it handed off to parsers via constructor args.
MessagesWriter getMessages()
Get the MessagesWriter for this UI, generating it if necessary.
TypeOracle getOracle()
Gets the type oracle.
OwnerClass getOwnerClass()
String getUiFieldAttributeName()
boolean isBinderElement(XMLElement elem)
boolean isWidgetElement(XMLElement elem)
String parseElementToField(XMLElement elem)
Parses the object associated with the specified element, and returns the name of the field (possibly private) that will hold it.
void setFieldInitializer(String fieldName, String factoryMethod)
Gives the writer the initializer to use for this field instead of the default GWT.create call.
void setFieldInitializerAsConstructor(String fieldName, JClassType type, String... args)
Instructs the writer to initialize the field with a specific constructor invocation, instead of the default GWT.create call.
String tokenForExpression(String expression)
Returns a string token that can be used in place the given expression inside any string literals.
void warn(XMLElement context, String message, Object... params)
Post a warning message.
void warn(String message, Object... params)
Post a warning message.
void warn(String message)
Post a warning message.
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.google.gwt.uibinder.rebind.Statements

Public Constructors

public UiBinderWriter (JClassType baseClass, String implClassName, String templatePath, TypeOracle oracle, MortalLogger logger, FieldManager fieldManager, MessagesWriter messagesWriter, DesignTimeUtils designTime, UiBinderContext uiBinderCtx)

Throws
UnableToCompleteException

Public Methods

public void addDetachStatement (String format, Object... args)

Add a statement to be executed right after the current attached element is detached. This is useful for doing things that might be expensive while the element is attached to the DOM.

public void addInitStatement (String format, Object... params)

Add a statement to be run after everything has been instantiated, in the style of format(String, Object...).

public void addStatement (String format, Object... args)

Adds a statement to the block run after fields are declared, in the style of format(String, Object...).

public static String asCommaSeparatedList (String... args)

public void beginAttachedSection (String element)

Begin a section where a new attachable element is being parsed--that is, one that will be constructed as a big innerHTML string, and then briefly attached to the dom to allow fields accessing its to be filled (at the moment, HasHTMLParser, HTMLPanelParser, and DomElementParser.).

Succeeding calls made to ensureAttached() and #ensureFieldAttached must refer to children of this element, until endAttachedSection() is called.

Parameters
element Java expression for the generated code that will return the dom element to be attached.

public String declareDomField (String fieldName)

Declare a field that will hold an Element instance. Returns a token that the caller must set as the id attribute of that element in whatever innerHTML expression will reproduce it at runtime.

In the generated code, this token will be replaced by an expression to generate a unique dom id at runtime. Further code will be generated to be run after widgets are instantiated, to use that dom id in a getElementById call and assign the Element instance to its field.

Parameters
fieldName The name of the field being declared
Throws
UnableToCompleteException

public String declareDomIdHolder ()

Declare a variable that will be filled at runtime with a unique id, safe for use as a dom element's id attribute.

Returns
  • that variable's name.
Throws
UnableToCompleteException

public String declareField (String typeName, XMLElement elem)

Declares a field of the given type name, returning the name of the declared field. If the element has a field or id attribute, use its value. Otherwise, create and return a new, private field name for it.

Throws
UnableToCompleteException

public String declareFieldIfNeeded (XMLElement elem)

If this element has a gwt:field attribute, create a field for it of the appropriate type, and return the field name. If no gwt:field attribute is found, do nothing and return null

Returns
  • The new field name, or null if no field is created
Throws
UnableToCompleteException

public String detokenate (String betokened)

Given a string containing tokens returned by tokenForExpression(String) or declareDomField(String), return a string with those tokens replaced by the appropriate expressions. (It is not normally necessary for an XMLElement.Interpreter or ElementParser to make this call, as the tokens are typically replaced by the TemplateWriter itself.)

public void die (String message)

Post an error message and halt processing. This method always throws an UnableToCompleteException

Throws
UnableToCompleteException

public void die (XMLElement context, String message, Object... params)

Post an error message about a specific XMLElement and halt processing. This method always throws an UnableToCompleteException

Throws
UnableToCompleteException

public void die (String message, Object... params)

Post an error message and halt processing. This method always throws an UnableToCompleteException

Throws
UnableToCompleteException

public void endAttachedSection ()

End the current attachable section. This will detach the element if it was ever attached and execute any detach statements.

public void ensureAttached ()

Ensure that the specified element is attached to the DOM.

public void ensureCurrentFieldAttached ()

Ensure that the specified field is attached to the DOM. The field must hold an object that responds to Element getElement(). Convenience wrapper for ensureAttached(field + ".getElement()").

public static String escapeAttributeText (String text)

Escape text that will be part of a string literal to be interpreted at runtime as an HTML attribute value.

public static String escapeText (String text, boolean preserveWhitespace)

Escape text that will be part of a string literal to be interpreted at runtime as HTML, optionally preserving whitespace.

public static String escapeTextForJavaStringLiteral (String text)

Escape characters that would mess up interpretation of this string as a string literal in generated code (that is, protect \, \n and " ).

public JClassType findFieldType (XMLElement elem)

Finds the JClassType that corresponds to this XMLElement, which must be a Widget or an Element.

Throws
UnableToCompleteException If no such widget class exists
RuntimeException if asked to handle a non-widget, non-DOM element

public void genPropertySet (String fieldName, String propName, String value)

Generates the code to set a property value (assumes that 'value' is a valid Java expression).

public void genStringPropertySet (String fieldName, String propName, String value)

Generates the code to set a string property.

public AttributeParser getBundleAttributeParser (XMLAttribute attribute)

This method is deprecated.
exists only to support BundleAttributeParser, which will be leaving us soon.

Finds an attribute BundleAttributeParser for the given xml attribute, if any, based on its namespace uri.

Returns
  • the parser or null
Throws
UnableToCompleteException

public ImplicitClientBundle getBundleClass ()

public DesignTimeUtils getDesignTime ()

Returns the DesignTimeUtils, not null.

public MortalLogger getLogger ()

Returns the logger, at least until we get get it handed off to parsers via constructor args.

public MessagesWriter getMessages ()

Get the MessagesWriter for this UI, generating it if necessary.

public TypeOracle getOracle ()

Gets the type oracle.

public OwnerClass getOwnerClass ()

public String getUiFieldAttributeName ()

public boolean isBinderElement (XMLElement elem)

public boolean isWidgetElement (XMLElement elem)

public String parseElementToField (XMLElement elem)

Parses the object associated with the specified element, and returns the name of the field (possibly private) that will hold it. The element is likely to make recursive calls back to this method to have its children parsed.

Parameters
elem the xml element to be parsed
Returns
  • the name of the field containing the parsed widget
Throws
UnableToCompleteException

public void setFieldInitializer (String fieldName, String factoryMethod)

Gives the writer the initializer to use for this field instead of the default GWT.create call.

Throws
IllegalStateException if an initializer has already been set

public void setFieldInitializerAsConstructor (String fieldName, JClassType type, String... args)

Instructs the writer to initialize the field with a specific constructor invocation, instead of the default GWT.create call.

Parameters
fieldName the field to initialize
type the type of the field
args arguments to the constructor call

public String tokenForExpression (String expression)

Returns a string token that can be used in place the given expression inside any string literals. Before the generated code is written, the expression will be stiched back into the generated code in place of the token, surrounded by plus signs. This is useful in strings to be handed to setInnerHTML() and setText() calls, to allow a unique dom id attribute or other runtime expression in the string.

public void warn (XMLElement context, String message, Object... params)

Post a warning message.

public void warn (String message, Object... params)

Post a warning message.

public void warn (String message)

Post a warning message.