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 -~----------~----~----~----~------~----~------~--~---
