nope - sadly it's a much more of a n00b error :/
someone who knows A LOT more about GWT than me, correctly pointed out
that it's my HTML that's borked....

as it's not XHMTL, the <div> need an explicit </div> to close them, or
they will all be 'children' of the ones that precede them
added a bunch of </div>s and it all worked fine

I will now go and hide in a dark corner....


On May 7, 7:39 pm, Vitali Lovich <[email protected]> wrote:
> No it's not.  You aren't using it correctly.
>
> Panel actionsarea = RootPanel.get("actionpanel");
> ActionsView actions = new ActionsView();
> actions.setMainPanel(actionsarea);
>
> I'm going to go out on a limb here & say it's the third line where the
> exception gets thrown.  Here's what I think you are doing (not really sure
> what ActionsView is doing, so this is conjecture):
>
> RootPanel.get() - wrapping an HTML component in a GWT widget
> actions.setMainPanel(actionsarea); - putting something that is a GWT widget
> that is wrapping an HTML component into another GWT widget.  This is not
> allowed (as per the diagram I gave previously).
>
> The "actionpanel" div already has an HTML parent element (the div with id
> "applicationarea").  You cannot add this to another GWT widget.
>
> On Thu, May 7, 2009 at 2:25 PM, marco <[email protected]> wrote:
>
> > This happens also for perfectly 'legal' HTML:
>
> >    <div id="staticarea" />
> >    <div id="applicationarea">
> >      <div id="menuarea" />
> >      <div id="clientarea" />
> >      <div id="actionpanel" />
> >    </div>
>
> > (the reason for doing so is that by using CSS I can easily position
> > the four areas in the client area - see attached)
> > Here's the code that generates the AssertionError:
>
> >  public void onModuleLoad() {
> >    Container.getInstance().registerController(this);
>
> >    Panel clientarea = RootPanel.get("clientarea");
> >    Label holding = new Label();
> >    holding.setText("work in progress...");
> >    clientarea.add(holding);
>
> >    Panel menuarea = RootPanel.get("menuarea");
> >    MenuView menuView = new MenuView(menuarea);
> >    registerView(ViewType.MENU, menuView);
> >    menuView.render();
>
> >    // This causes the exception to be raised:
> >    Panel actionsarea = RootPanel.get("actionpanel");
> >    ActionsView actions = new ActionsView();
> >    actions.setMainPanel(actionsarea);
> >    registerView(ViewType.ACTION, actions);
> >    actions.render();
> >  }
>
> > IMHO this is a genuine GWT bug....
>
> > On Apr 28, 8:40 pm, Vitali Lovich <[email protected]> wrote:
> > > Yes.  Use GWT properly.  Don't use raw HTML.  That's your problem.
>
> > > Instead of adding an HTML widget that wraps a "<div>", use a SimplePanel
> > &
> > > set it's id if you need to.  Look at the showcase - it shows you a brief
> > > overview of most (all?) the widgets GWT has.
>
> > > Think of using raw HTML in your app as something akin to JSNI - only do
> > it
> > > if you know what you are doing, otherwise you're just going to shoot
> > > yourself in the foot.  The only time raw HTML is "commonly" used is in
> > the
> > > constructor of some Widgets (you'll see a boolean asking if you want to
> > > treat the string as text or html).
>
> > > The rule of thumb to use is as follows:
>
> > > HTML element
> > >  |
> > >  v
> > > wrapping GWT root panel
> > >  |
> > >  v
> > > GWT widgets & panels
> > >  |
> > >  v
> > > HTML possible
>
> > > Do not put GWT widgets below HTML possible.  Do not wrap HTML possible in
> > > GWT widgets.  HTML element can have sibling elements that get wrapped
> > with
> > > GWT.
>
> > > Hopefully this'll clarify it for you.
>
> > > On Tue, Apr 28, 2009 at 4:52 AM, kohlyn <[email protected]> wrote:
>
> > > > Any suggested workarounds?
>
> > > > I currently load a page layout in HTML (Header/Menu Bar/Footer) ...
> > > > then in each section I load different HTML layouts depending on the
> > > > user, and then I add the controls.
>
> > > > On Apr 27, 6:15 pm, Vitali Lovich <[email protected]> wrote:
> > > > > Yes this has already come up on the mailing list.  This was always
> > > > illegal,
> > > > > just uncaught prior to 1.6.  You cannot wrap two elements in GWT if
> > they
> > > > > already have a parent/child relationship in the DOM (causes a
> > mismatch in
> > > > > the trees).
>
> > > > > Do a search & you'll find the response from the GWT developer
> > regarding
> > > > this
> > > > > issue.
>
> > > > > On Mon, Apr 27, 2009 at 11:12 AM, kohlyn <[email protected]> wrote:
>
> > > > > > I'm getting the following errors with 1.6.4 on a Mac.
>
> > > > > > "A widget that has an existing parent widget may not be added to
> > the
> > > > > > detach list"
>
> > > > > > The HTML is:
>
> > > > > >  <body>
> > > > > >    <!-- OPTIONAL: include this if you want history support -->
> > > > > >    <iframe src="javascript:''" id="__gwt_historyFrame"
> > tabIndex='-1'
> > > > > > style="position:absolute;width:0;height:0;border:0"></iframe>
> > > > > >    <h1>Web Application Starter Project</h1>
> > > > > >    <div id="testdiv"></div>
> > > > > >  </body>
>
> > > > > > Code:
>
> > > > > >        public void onModuleLoad() {
>
> > > > > >                HTMLPanel p = new HTMLPanel("<div
> > id=\"testdiv2\">Test
> > > > Div
> > > > > > 2</
> > > > > > div>");
>
> > > > > >                RootPanel.get("testdiv").add(p);
>
> > > > > >                final TextBox txtUsername = new TextBox();
>
> > > > > >                RootPanel.get("testdiv2").add(txtUsername);
>
> > > > > >        }
> > > > > > }
>
> > > > > > This code worked in the 1.4 and 1.5 branches, but not 1.6.
>
> > > > > > The line:
>
> > > > > >   "RootPanel.get("testdiv2").add(txtUsername);"
>
> > > > > > throws the exception.
> > > > > >   "A widget that has an existing parent widget may not be added to
> > > > > > the detach list"
>
> > > > > > The problems appears to be with a new check in
> > > > > > RootPanel.detachOnWindowClose(Widget widget)
>
> > > > > >    assert !isElementChildOfWidget(widget.getElement()) : "A widget
> > > > > > that has "
> > > > > >        + "an existing parent widget may not be added to the detach
> > > > > > list";
>
> > > > > > RootPanel.isElementChildOfWidget(Element element) appears to fail
> > > > > > because I'm adding a widget to an already attached element.
>
> > > > > > Any work arounds/ideas would be greatly appreciated ... I have a
> > 1.4
> > > > > > application that is based on dynamically loading page layouts from
> > a
> > > > > > database.
>
> > > > > > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to