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 <m.massen...@googlemail.com> 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 <vlov...@gmail.com> 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 <co...@solas.net> 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 <vlov...@gmail.com> 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 <co...@solas.net> 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 Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---