I think you'll have better luck if you pursue this in another forum,
like the [email protected] general GWT forum or the
SmartGWT forum - I personally am just not that knowledgeable about how
do do what I think you are asking to do (mixing HTML layout with
widgets)

On Tue, May 10, 2011 at 12:58 AM, Rob <[email protected]> wrote:
> Hi,
>
> After a bit more investigation I found this post (GWT layout gotcha) -
>> http://turbomanage.wordpress.com/2010/01/12/gwt-layout-gotcha/ on
> David Chandler's blog.
>
> Which states "One gotcha I’ve found is that you must be careful not to
> attach a widget to a DIV nested inside a DIV that is attached to a
> widget."
>
> ->
>
> public class DashboardsView extends
> ViewWithUiHandlers<DashboardsUiHandlers> implements
>  DashboardsPresenter.MyView {
>
>  private static final String CONTEXT_AREA_WIDTH = "*";
>  private static String html = "<div id=\"chart_nested_div\"> </div>
> \n";
>
>  private VLayout panel;
>  private HTMLFlow htmlFlow;
>
>  private PieChart pie;
>
>  public DashboardsView() {
>
>    panel = new VLayout();
>    panel.setWidth(CONTEXT_AREA_WIDTH);
>
>    htmlFlow = new HTMLFlow(html);
>
>    panel.addMember(htmlFlow);
>
>    loadVisualizationApi();
>  }
>
>  @Override
>  public Widget asWidget() {
>    return panel;
>  }
>
>  public void loadVisualizationApi() {
>
>    Log.debug("loadVisualizationApi()");
>
>    // Create a callback to be called when the visualization API has
> been loaded.
>    Runnable onLoadCallback = new Runnable() {
>      public void run() {
>
>        Log.debug("onLoadCallback()");
>
>        pie = new PieChart(createTable(), createOptions());
>
>        RootPanel.get("chart_sibling_div").add(pie);
>        // RootPanel.get("chart_nested_div").add(pie);
>      }
>    };
>
>    // Load the visualization api, passing the onLoadCallback to be
> called when loading is complete.
>    VisualizationUtils.loadVisualizationApi("1.1", onLoadCallback,
> PieChart.PACKAGE);
>  }
>
> ->
>
> Host file:
>
> ->
>
>  <body>
>
>    <div id="loading" style="display: block;position: absolute;top:
> 50%;left: 50%;
>         text-align: center;font-family: Tahoma, Verdana, sans-
> serif;font-size: 11px;">
>      Loading
>      <img src="images/loading.gif" />
>    </div>
>
>    <!-- 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>
>
>    <div id="chart_sibling_div"> </div>
>
>  </body>
>
> ->
>
> The call to RootPanel.get("chart_sibling_div").add(pie) works as
> expected (albeit the chart isn't where I'd like it to be). However,
> the same call (using a nested div)
> "RootPanel.get("chart_nested_div").add(pie)" fails as per David's post
>
> [ERROR] Uncaught exception escaped
> java.lang.AssertionError: A widget that has an existing parent widget
> may not be added to the detach list
> at
> com.google.gwt.user.client.ui.RootPanel.detachOnWindowClose(RootPanel.java:
> 122)
>
> N.B. The application (http://code.google.com/p/crmdipity/) uses
> smartGWT nested layout containers to achieve a look very similar to a
> GWT's SplitLayoutPanel.
>
> See also -> http://code.google.com/p/google-web-toolkit/issues/detail?id=3511
>
> Sample code and screen shot -> 
> http://forums.smartclient.com/showthread.php?t=16703
>
> Any suggestions much appreciated :-)
>
> Cheers
> Rob
>
> On May 10, 9:05 am, Rob <[email protected]> wrote:
>> Hi Eric,
>>
>> Thanks for getting back to me.
>>
>> ->http://code.google.com/p/gwt-google-apis/issues/detail?id=425
>>
>> Yes, I found that post yesterday and that's why I moved from smartGWT
>> 2.4 to the latest smartGWT nightly build (2.5).
>>
>> -> making sure you aren't moving any widgets from one parent to
>> another
>>
>> I think its a smartGWT-related issue 
>> ->http://forums.smartclient.com/showthread.php?t=16703
>>
>> I also posted here because of this post 
>> ->http://groups.google.com/group/google-visualization-api/browse_thread...
>>
>> Although it might also be GWTP-related.
>>
>> As you suggested I'll set some breakpoints and see how I go.
>>
>> Cheers
>> Rob
>>
>> On May 10, 2:31 am, Eric Ayers <[email protected]> wrote:
>>
>> > First of all, there was an issue a lot of SmartGWT users ran into
>> > w/r/t visualization I wanted you to be aware of.
>>
>> >http://code.google.com/p/gwt-google-apis/issues/detail?id=425
>>
>> > The message you're getting doesn't sound specific to the visualization
>> > API, it sounds more like a general GWT or smart GWT problem.   As a
>> > general debugging tip, I'd recommend setting break points in dev mode
>> > and making sure you aren't moving any widgets from one parent to
>> > another and you aren't accidentally getting a callback more than once.
>>
>> > On Sun, May 8, 2011 at 9:44 PM, Rob <[email protected]> wrote:
>> > > Hi
>>
>> > > I would like to add visualization support via the Google Visualization
>> > > API (1.1) to an existing GWT (2.1.1) and smartGWT (2.4) application.
>>
>> > > I followed the approach described in this post ->
>> > >http://forums.smartclient.com/showpost.php?p=37754&postcount=2andthe
>> > > Visualization Getting Started guide->
>> > >http://code.google.com/p/gwt-google-apis/wiki/VisualizationGettingSta....
>>
>> > > And, then found this post ->
>> > >http://groups.google.com/group/google-visualization-api/browse_thread...
>> > > in the Google Visualization API discussion group.
>>
>> > > For example:
>>
>> > > ->
>>
>> > >  public void loadVisualizationApi() {
>>
>> > >    Log.debug("loadVisualizationApi()");
>>
>> > >    // Create a callback to be called when the visualization API
>> > >    // has been loaded.
>> > >    Runnable onLoadCallback = new Runnable() {
>> > >      public void run() {
>>
>> > >        Log.debug("onLoadCallback()");
>>
>> > >        // Create a pie chart visualization.
>> > >        pie = new PieChart(createTable(), createOptions());
>> > >        pie.setWidth("80%");
>>
>> > >        Canvas canvas = new Canvas();
>> > >        canvas.setID("sys_pie_canvas");
>> > >        canvas.setWidth100();
>> > >        canvas.setHeight("50%");
>> > >        canvas.addChild(pie);
>>
>> > >        panel.addMember(canvas, 0);
>>
>> > >        Log.debug("panel.addMember(canvas, 0)");
>> > >      }
>> > >    };
>>
>> > >    // Load the visualization api, passing the onLoadCallback
>> > >    // to be called when loading is complete.
>> > >    VisualizationUtils.loadVisualizationApi("1.1", onLoadCallback,
>> > >        PieChart.PACKAGE);
>> > >  }
>>
>> > >  // The code for createTable() and createOptions()) is as per
>> > >  // the post mentioned above.
>>
>> > > ->
>>
>> > > However, this results in the following error:
>> > > java.lang.AssertionError: A widget that has an existing parent widget
>> > > may not be added to the detach list at
>> > > com.google.gwt.user.client.ui.RootPanel.detachOnWi
>> > > ndowClose(RootPanel.java:136) when using GWT (2.1.1), smartGWT LGPL
>> > > (2.5 nightly build) and Google Visualization API (1.1).
>>
>> > > Note: I also tested the code using smartGWT (2.4) and received the
>> > > following error: (NativeMethodAccessorImpl.java:-2) 2011-05-09
>> > > 10:26:21,613 [FATAL] Uncaught JavaScript exception [Script error.]
>> > > in , line 0
>>
>> > > If I comment out the call to "panel.addMember(pie)" and replace it
>> > > with "RootPanel.get().add(pie)" no exception is thrown and the "chart"
>> > > is rendered correctly (you can see it momentarily if you re-size the
>> > > browser window) but as a child of the root panel. Which means it is
>> > > hidden by the application's other nested layout containers (e.g.
>> > > North, West, East and South).
>>
>> > > I would like to be able to place the "chart" in a nested layout
>> > > container if possible?
>>
>> > > The stack trace:
>>
>> > > ->
>>
>> > > 16:13:50.134 [ERROR] [serendipity] (ExceptionHelper.java:38)
>> > > 2011-05-08 16:13:50,134 [FATAL] Uncaught Exception:
>>
>> > > java.lang.AssertionError: A widget that has an existing parent widget
>> > > may not be added to the detach list
>> > >    at
>> > > com.google.gwt.user.client.ui.RootPanel.detachOnWindowClose(RootPanel.java:
>> > > 136)
>> > >    at com.google.gwt.user.client.ui.RootPanel.get(RootPanel.java:211)
>> > >    at
>> > > com.smartgwt.client.widgets.WidgetCanvas.onDraw(WidgetCanvas.java:39)
>> > >    at com.smartgwt.client.widgets.BaseWidget.rendered(BaseWidget.java:
>> > > 242)
>> > >    at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
>> > >    at
>> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>> > > 25)
>> > >    at java.lang.reflect.Method.invoke(Method.java:597)
>> > >    at
>> > > com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
>> > >    at
>> > > com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
>> > >    at
>> > > com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:
>> > > 157)
>> > >    at
>> > > com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:
>> > > 326)
>> > >    at
>> > > com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:
>> > > 207)
>> > >    at
>> > > com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:
>> > > 126)
>> > >    at
>> > > com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:
>> > > 561)
>> > >    at
>> > > com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:
>> > > 289)
>> > >    at
>> > > com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:
>> > > 107)
>> > >    at
>> > > com.smartgwt.client.widgets.layout.Layout.addMemberPostCreate(Layout.java)
>> > >    at com.smartgwt.client.widgets.layout.Layout.addMember(Layout.java:
>> > > 1089)
>> > >    at com.smartgwt.client.widgets.layout.Layout.addMember(Layout.java:
>> > > 1076)
>> > >    at au.com.uptick.serendipity.client.sales.view.DashboardsView
>> > > $1.run(DashboardsView.java:76)
>> > >    at
>> > > com.google.gwt.ajaxloader.client.ExceptionHelper.runProtected(ExceptionHelper.java:
>> > > 36)
>> > >    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > >    at
>> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>> > > 39)
>> > >    at
>> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>> > > 25)
>> > >    at java.lang.reflect.Method.invoke(Method.java:597)
>> > >    at
>> > > com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
>> > >    at
>> > > com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
>> > >    at
>> > > com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:
>> > > 157)
>> > >    at
>> > > com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:
>> > > 281)
>> > >    at
>> > > com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:
>> > > 531)
>> > >    at
>> > > com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:
>> > > 352)
>> > >    at java.lang.Thread.run(Thread.java:619)
>>
>> > > ->
>>
>> > > Cheers
>> > > Rob
>>
>> > > --
>> > > You received this message because you are subscribed to the Google 
>> > > Groups "Google Visualization API" 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 
>> > > athttp://groups.google.com/group/google-visualization-api?hl=en.
>>
>> > --
>> > Eric Z. Ayers
>> > Google Web Toolkit, Atlanta, GA USA
>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google Visualization API" 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-visualization-api?hl=en.
>
>



-- 
Eric Z. Ayers
Google Web Toolkit, Atlanta, GA USA

-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" 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-visualization-api?hl=en.

Reply via email to