I'd be inclined to start with a) and see what happens.

On Wed, May 4, 2011 at 10:02 AM, <[email protected]> wrote:

>
>
> http://gwt-code-reviews.appspot.com/1427812/diff/1/user/src/com/google/gwt/user/client/ui/AttachableHTMLPanel.java
> File user/src/com/google/gwt/user/client/ui/AttachableHTMLPanel.java
> (right):
>
>
> http://gwt-code-reviews.appspot.com/1427812/diff/1/user/src/com/google/gwt/user/client/ui/AttachableHTMLPanel.java#newcode205
> user/src/com/google/gwt/user/client/ui/AttachableHTMLPanel.java:205: if
> (isFullyInitialized()) {
> On 2011/05/04 16:47:17, rjrjr wrote:
>
>> This seems pretty unexpected. I would have thought it would either be
>>
> an error
>
>> (RuntimeException), or else that I would do the opposite of this:
>>
> replace my
>
>> existing element with the new one.
>>
>
> I'd be totally fine with a RuntimeError, it'll probably be m ore
> manageable in the long-term. I was trying to support this because even
> though it's less efficient, we can still make it work. The scenario here
> is:
>
> 1-) Build Attachable tree. This includes calling all the render() stuff
> and so on. Let's assume that this particular AttachableHTMLPanel is in
> the middle of the tree.
>
> 2-) For some reason do something to this particular panel (that's in the
> middle of the tree) that calls its getElement() [let's say attach it to
> the document]. This triggers the process of building the widget tree as
> if this panel was the root (i.e., hidden div, set innerHTML, getting
> elements for all children and initializing them). At this point
> everything works
>
> 3-) Now you go and attach the "real" root of the tree, an ancestor of
> this panel. We can do one of 3 things:
>  (a) throw an error. You probably didn't mean to do this as it's less
> efficient
>  (b) replace the element that our parent assigned us (along with its
> subtree) with the subtree we already built in step 2
>  (c) re-do everything in step 2, ignoring the fact that we already
> initialized all children widget
>
> I think (a) would be ideal, specially for debugging purposes. Honestly I
> implemented (b) because I was a little afraid and wanted to be as
> backwards-compatible as possible.  I don't think (c) would work
> out-of-the-box, as we'd have to support initializing Widgets twice
> (i.e., re-setting the element, etc.)
>
> Makes sense?
>
>
> http://gwt-code-reviews.appspot.com/1427812/
>

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

Reply via email to