Reviewers: rjrjr,
Description:
Remove FieldWriter.setAttachable() and find out automatically whether
the callbacks should be created.
Review by: rj...@google.com
Please review this at http://gwt-code-reviews.appspot.com/1421807/
Affected files:
M
user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
M user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
M user/src/com/google/gwt/uibinder/rebind/FieldManager.java
M user/src/com/google/gwt/uibinder/rebind/FieldWriter.java
Index:
user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
===================================================================
---
user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
(revision 10089)
+++
user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
(working copy)
@@ -32,8 +32,6 @@
final UiBinderWriter writer) throws UnableToCompleteException {
assert writer.useLazyWidgetBuilders();
- writer.getFieldManager().lookup(fieldName)
- .setAttachable(true);
/*
* Gathers up elements that indicate nested Attachable objects.
Index: user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
===================================================================
--- user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
(revision 10089)
+++ user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
(working copy)
@@ -23,6 +23,7 @@
import com.google.gwt.core.ext.typeinfo.TypeOracle;
import com.google.gwt.dom.client.Element;
import com.google.gwt.uibinder.rebind.model.OwnerField;
+import com.google.gwt.user.client.ui.AttachableHTMLPanel;
import java.util.ArrayList;
import java.util.Arrays;
@@ -58,7 +59,6 @@
private boolean written;
private int buildPrecedence;
private MortalLogger logger;
- private boolean isAttachable;
public AbstractFieldWriter(String name, MortalLogger logger) {
if (name == null) {
@@ -110,11 +110,6 @@
public void needs(FieldWriter f) {
needs.add(f);
- }
-
- @Override
- public void setAttachable(boolean attachable) {
- this.isAttachable = attachable;
}
@Override
@@ -183,8 +178,15 @@
@Override
public void writeFieldDefinition(IndentedWriter w, TypeOracle typeOracle,
- OwnerField ownerField, DesignTimeUtils designTime, int getterCount)
+ OwnerField ownerField, DesignTimeUtils designTime, int getterCount,
+ boolean useLazyWidgetBuilders)
throws UnableToCompleteException {
+
+ JClassType attachableHTMLPanelType = typeOracle.findType(
+ AttachableHTMLPanel.class.getName());
+ boolean outputAttachDetachCallbacks = useLazyWidgetBuilders
+ && getAssignableType() != null
+ && getAssignableType().isAssignableTo(attachableHTMLPanelType);
// Check initializer.
if (initializer == null) {
@@ -238,7 +240,7 @@
if (attachStatements.size() > 0) {
w.newline();
w.write("// Attach section.");
- if (isAttachable) {
+ if (outputAttachDetachCallbacks) {
// TODO(rdcastro): This is too coupled with AttachableHTMLPanel.
// Make this nicer.
w.write("%s.wrapInitializationCallback = ", getName());
@@ -265,7 +267,7 @@
w.write(s);
}
- if (isAttachable) {
+ if (outputAttachDetachCallbacks) {
w.outdent();
w.write("}");
w.outdent();
@@ -282,7 +284,7 @@
}
if (detachStatements.size() > 0) {
- if (isAttachable) {
+ if (outputAttachDetachCallbacks) {
w.write("%s.detachedInitializationCallback = ", getName());
w.indent();
w.indent();
@@ -296,7 +298,7 @@
w.write(s);
}
- if (isAttachable) {
+ if (outputAttachDetachCallbacks) {
w.outdent();
w.write("}");
w.outdent();
Index: user/src/com/google/gwt/uibinder/rebind/FieldManager.java
===================================================================
--- user/src/com/google/gwt/uibinder/rebind/FieldManager.java (revision
10089)
+++ user/src/com/google/gwt/uibinder/rebind/FieldManager.java (working copy)
@@ -287,8 +287,13 @@
Collection<FieldWriter> fields = fieldsMap.values();
for (FieldWriter field : fields) {
int counter = getGetterCounter(field.getName());
- field.writeFieldDefinition(writer, typeOracle,
- ownerClass.getUiField(field.getName()), designTime, counter);
+ field.writeFieldDefinition(
+ writer,
+ typeOracle,
+ ownerClass.getUiField(field.getName()),
+ designTime,
+ counter,
+ useLazyWidgetBuilders);
}
}
Index: user/src/com/google/gwt/uibinder/rebind/FieldWriter.java
===================================================================
--- user/src/com/google/gwt/uibinder/rebind/FieldWriter.java (revision
10089)
+++ user/src/com/google/gwt/uibinder/rebind/FieldWriter.java (working copy)
@@ -126,9 +126,6 @@
*/
void needs(FieldWriter f);
- // TODO(rdcastro): Remove this and detect automatically.
- void setAttachable(boolean isAttachableOutput);
-
/**
* Sets the precedence of this field builder. Field with higher values
are
* written first.
@@ -206,6 +203,7 @@
* </p>
*/
void writeFieldDefinition(IndentedWriter w, TypeOracle typeOracle,
- OwnerField ownerField, DesignTimeUtils designTime, int getterCount)
+ OwnerField ownerField, DesignTimeUtils designTime, int getterCount,
+ boolean useLazyWidgetBuilders)
throws UnableToCompleteException;
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors