Thanks for the quick update, looking now. One thought (doesn't gate this patch): I wonder if your code bloat problem would go away if your Widgets classes were JSOs.
On Wed, Apr 20, 2011 at 9:03 AM, <her...@google.com> wrote: > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/client/UiBinderUtil.java > File user/src/com/google/gwt/uibinder/client/UiBinderUtil.java (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/client/UiBinderUtil.java#newcode44 > user/src/com/google/gwt/uibinder/client/UiBinderUtil.java:44: element = > com.google.gwt.dom.client.Document.get() > On 2011/04/19 21:07:20, rjrjr wrote: > >> no need for the long name, this is imported >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java > File > user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java > (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java#newcode38 > user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java:38: > > On 2011/04/19 21:07:20, rjrjr wrote: > >> assert writer.useAttachableStrategyMabobThing(); >> > > Well, the parser is not registered if the flag is disabled so this point > is never reached. But did the change anyway since this way I can spit > out a better warning message. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java#newcode40 > user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java:40: > String widgetClassPath = writer.getClassPath(Widget.class); > On 2011/04/19 21:07:20, rjrjr wrote: > >> just use Widget.class.getName(), getClassPath adds no value I can see. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java#newcode42 > user/src/com/google/gwt/uibinder/elementparsers/LazyPanelParser.java:42: > String code = null; > On 2011/04/19 21:07:20, rjrjr wrote: > >> Use XMLElement#consumeSingleChildElement and you don't need your own >> one-and-only-one checks. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java > File > user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java > (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java#newcode95 > user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java:95: > "com.google.gwt.uibinder.client.UiBinderUtil.LazyDomElement", > elementPointer); > On 2011/04/19 21:07:20, rjrjr wrote: > >> Please use LazyDomElement.class.getName() >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java#newcode98 > user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java:98: > "new com.google.gwt.uibinder.client.UiBinderUtil.LazyDomElement(%s)", > On 2011/04/19 21:07:20, rjrjr wrote: > >> ditto >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java > File user/src/com/google/gwt/uibinder/rebind/FieldManager.java (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode98 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:98: public > void addAttachStatement(String fieldName, String format, Object... args) > On 2011/04/19 21:07:20, rjrjr wrote: > >> Don't duplicate the FieldWriter api. To get them add a new >> > require(fieldName) > >> method that wraps lookup() and does the die thing. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode102 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:102: > logger.die("Failing adding attach statement. FieldName %s has no > FieldWriter associated.", > On 2011/04/19 21:07:20, rjrjr wrote: > >> die is for user error. If this is really developer error, make it a >> RuntimeException. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode112 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:112: public > void addDetachStatement(String fieldName, String format, Object... args) > On 2011/04/19 21:07:20, rjrjr wrote: > >> ditto >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode126 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:126: public > FieldWriter addFieldStatement(String fieldName, String format, Object... > args) > On 2011/04/19 21:07:20, rjrjr wrote: > >> ditto >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode143 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:143: public > String convertFieldToGetter(String fieldName) { > On 2011/04/19 21:07:20, rjrjr wrote: > >> Can this be a FieldWriter instance method? >> > > No because convertFieldToGetter() might be called before FieldWriter is > actually created, so for now this is the easier way. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode155 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:155: * There > are 3 possible situations: > On 2011/04/19 21:07:20, rjrjr wrote: > >> Lists like this are more readable if you use <dl>, and drop the >> > colons. e.g. > > <dl> >> <dt>getter never called >> <dd> write builder only if... >> </dl> >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode177 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:177: Integer > count = getGetterCounter(field.getName()); > On 2011/04/19 21:07:20, rjrjr wrote: > >> And this block can be an instance method on FieldWriter >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode314 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:314: public > void setFieldInitializer(String fieldName, String format, Object... > args) > On 2011/04/19 21:07:20, rjrjr wrote: > >> ditto >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldManager.java#newcode379 > user/src/com/google/gwt/uibinder/rebind/FieldManager.java:379: private > int getGetterCounter(String fieldName) { > On 2011/04/19 21:07:20, rjrjr wrote: > >> Wouldn't this count be more natural as a field on the FieldWriter? >> > > see my previous comment. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java > File user/src/com/google/gwt/uibinder/rebind/FieldWriter.java (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java#newcode41 > user/src/com/google/gwt/uibinder/rebind/FieldWriter.java:41: * Add a > statement to be executed right after the current field is attached. > On 2011/04/19 21:07:20, rjrjr wrote: > >> Thanks, this is helpful. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java#newcode66 > user/src/com/google/gwt/uibinder/rebind/FieldWriter.java:66: * Add a > statement to be executed right after the current field is detached. > Example: > On 2011/04/19 21:07:20, rjrjr wrote: > >> lose "Example:" >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java#newcode155 > user/src/com/google/gwt/uibinder/rebind/FieldWriter.java:155: * private > WidgetX get_widgetX() { > On 2011/04/19 21:07:20, rjrjr wrote: > >> I'm wondering if some of your code size penalty will go away if you >> > simply don't > >> write get_ methods for only-once widgets. Make them work as if >> useAttachableStrategy is false. Needn't gate submitting this since you >> > put the > >> switch in, just something to think about. >> > > OK. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java#newcode164 > user/src/com/google/gwt/uibinder/rebind/FieldWriter.java:164: * Notice > that there's no field class and the getter just fallback to > On 2011/04/19 21:07:20, rjrjr wrote: > >> "field class" You mean just "field"? >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java > File user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java > (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java#newcode50 > user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java:50: > private static final String ELEMENT_FACTORY_PROPERTY = > "uibinder.html.elementfactory"; > On 2011/04/19 21:07:20, rjrjr wrote: > >> You're stale, this field is gone now. >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java#newcode166 > user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java:166: // > TODO(hermes): poor naming > On 2011/04/19 21:07:20, rjrjr wrote: > >> How about useLazyWidgetBuilders >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java > File user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java > (right): > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode129 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:129: public > static String extractFieldFromCode(String code) { > On 2011/04/19 21:07:20, rjrjr wrote: > >> Does this really need to be public? >> > > Moved to where it's called. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode322 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:322: // I'm > expliciting over-simplifying this and assuming that the input > On 2011/04/19 21:07:20, rjrjr wrote: > >> Use /* for long comments. And doesn't this comment belong in >> extractFieldFromCode? >> > > I'd rather having them together, so I'm moving the code from > extractFieldFromCode to here. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode329 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:329: } catch > (UnableToCompleteException e) { > On 2011/04/19 21:07:20, rjrjr wrote: > >> Why is this okay? >> > > Not OK, sort of done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode364 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:364: * > @param fieldName The name of the field being declared > On 2011/04/19 21:07:20, rjrjr wrote: > >> @param ancestorField ... >> > > Done. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode404 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:404: > domField.setBuildPrecendence(2); > On 2011/04/19 21:07:20, rjrjr wrote: > >> comment explaining why >> > > Done. I really hated this but it's the easier way of determining which > builders should come first. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode624 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:624: public > String getClassPath(Class clazz) { > On 2011/04/19 21:07:20, rjrjr wrote: > >> Really? What's wrong with clazz.getName()? Why have this method at >> > all? > > Not needed, old shit I forgot to get rid of. > > > > http://gwt-code-reviews.appspot.com/1420804/diff/1/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode713 > user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:713: return > (returnGetter ? fieldManager.convertFieldToGetter(fieldName) : > fieldName); > On 2011/04/19 21:07:20, rjrjr wrote: > >> Can convertFieldToGetter be an instant method on FieldWriter? >> > > If so, instead of the hacky returnGetter arg, you can make this method >> > return > >> the FieldWriter itself (still leaving the old one as a wrapper around >> > it to > >> avoid mass parser update -- maybe this is just >> > parseElement(XMLElement)?). Now > >> that you've made FieldManager more public might as well go whole hog. >> > > Either way, please update the javadoc here and below. >> > > See my previous comment, convertFieldToGetter() cannot be FieldWriter, > at least for now. Sometimes it is called before the field writer is > actually created. > > Can I leave a TODO? We must revisit this in the future when > useLazyWidgetBuilders become the main branch. > > > http://gwt-code-reviews.appspot.com/1420804/ > -- http://groups.google.com/group/Google-Web-Toolkit-Contributors