Ok, I think I have some more useful feedback now. Nice document, I think
we must add support in RenderablePanel to have UiRenderer objects added
to them, that'd be awesome. Components that don't have to be widgets :-)


http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
File user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
(right):

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java#newcode279
user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java:279: &&
!resourceType.getErasedType().equals(matchingResourceType.getErasedType()))
{
do you need equals? Could it just be assignable?

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java#newcode284
user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java:284:
resourceType = matchingResourceType.getErasedType();
you don't need to do this, right? You could just pass
matchingResourceType.getErasedType() to registerField below. I'm just
mentioning because it throw me off a bit and I kept trying to find where
you used this value afterwards and overlooked the "return"

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java#newcode295
user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java:295: if
(writer.getOwnerClass() != null
How about breaking each of these if blocks into its own method? This is
getting really hard to follow.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java#newcode295
user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java:295: if
(writer.getOwnerClass() != null
Can we return or die here if writer.getOwnerClass() == null? It would
make the following code simpler (and the old code seems to assume it's
!= null.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java#newcode423
user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java:423: private
JClassType findRenderParameterType(String resourceName) {
part of this logic is repeated in UiBinderWriter.findRenderParameters().
In particular there you allow multiple render() methods as long as only
one of them has SafeHtmlBuilder as the first parameter. Here you make no
such check.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/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/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode458
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:458: *
@return that variable's name.
@param fieldName ...

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode460
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:460: public
String declareDomIdHolder(String fieldName) throws
UnableToCompleteException {
Don't know if you guys use @Nullable much in GWT code, but this would be
a good place to put that.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1094
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1094:
private List<JMethod> findGetterNames(JClassType owner) {
this method could be static.
In fact, how do you guys feel about adding a utility class to this
directory. UiBinderWriter is huge already, maybe we can clean it up a
bit..

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1379
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1379:
private String renderMethodParameters(JParameter[] renderParameters) {
this too could be static.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1706
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1706:
fieldManager.initializeWidgetsInnerClass(w, getOwnerClass());
Yeah, I think it is. What this does is generate the block of
"build_fieldX();" calls that initialize all fields you've declared. I
think you need it here.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1721
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1721:
writeRenderParameterDefinitions(w, renderParameters);
wouldn't it be better to declare these before the render() method? Just
because that's probably how we'd right it if it was "normal" code.

http://gwt-code-reviews.appspot.com/1466809/diff/6001/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1745
user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1745:
w.write("return (%s) UiRendererUtils.findInnerField(%s, \"%s\",
RENDERED_ATTRIBUTE);",
Do you know about LazyDomElement
(https://csearch.corp.google.com/#google3/third_party/java_src/gwt/svn/trunk/user/src/com/google/gwt/uibinder/client/LazyDomElement.java&q=LazyDomElement)
?

I might be missing something, but I think you could make things simpler
if you declared the elements you need to return via getters as
LazyDomElements. Taht way you don't need a special way to build their
IDs and the generated code for the getter would be a simple
lazyDomElement.get();

http://gwt-code-reviews.appspot.com/1466809/

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to