Ate you perhaps using a layoutpanel?  I believe simplepanel descends from 
panel. 

For layoutpanels use rootlaylout.get

sorry for my poor typing. I'm trying to tap this out quickly on my mobile.  

Corey <corey.nel...@gmail.com> wrote:

I'm trying to modify the GWT 2.1 HelloMVP example code to use a more
complex UI.
http://code.google.com/p/google-web-toolkit/downloads/detail?name=Tutorial-hellomvp-2.1.zip

My problem is that ActivityManager.setDisplay only accepts objects
that implement AcceptsOneWidget. LayoutPanel and other ComplexPanel's
don't implement AcceptsOneWidget. The example code uses a SimplePanel
instead.

I've found a few discussions on this problem:
http://stackoverflow.com/questions/5143196/is-there-a-acceptsonewidget-which-also-providesresze-other-than-scrollpanel?answertab=active#tab-top
http://www.tempura.org/rants/2010/10/using-layoutpanels-with-gwt-2-1s-activitymanager/

People suggest the solution is to create a subclass of the
ComplexPanel I want that implements the AcceptsOneWidget interface.
Like so:

public class PanelForView extends LayoutPanel implements
AcceptsOneWidget {
    IsWidget myWidget = null;

    @Override
    public void setWidget(IsWidget w) {
        if (myWidget != w)  {
            if (myWidget != null) {
                remove(myWidget);
            }

            if (w != null) {
                add(w);
            }

            myWidget = w;
        }
    }
}

This sounds great but it doesn't seem to work for me. Perhaps because
I'm using GWT 2.3 instead of 2.1 or 2.2. In my EntryPoint I expect to
simply replace the SimplePanel with my new PanelForView class and have
the app run as before. Like so:

public class HelloMVP implements EntryPoint {
        private Place defaultPlace = new HelloPlace("World!");
//      private SimplePanel appWidget = new SimplePanel(); // Replace this
with PanelForView
        private PanelForView appWidget = new PanelForView(); // This compiles
but doesn't work.
//      private SimpleLayoutPanel appWidget = new SimpleLayoutPanel(); //
This doesn't work either.

        public void onModuleLoad() {
                // Create ClientFactory using deferred binding so we can replace
with different
                // impls in gwt.xml
                ClientFactory clientFactory = GWT.create(ClientFactory.class);
                EventBus eventBus = clientFactory.getEventBus();
                PlaceController placeController =
clientFactory.getPlaceController();

                // Start ActivityManager for the main widget with our 
ActivityMapper
                ActivityMapper activityMapper = new
AppActivityMapper(clientFactory);
                ActivityManager activityManager = new
ActivityManager(activityMapper, eventBus);
                activityManager.setDisplay(appWidget);

                // Start PlaceHistoryHandler with our PlaceHistoryMapper
                AppPlaceHistoryMapper historyMapper=
GWT.create(AppPlaceHistoryMapper.class);
                PlaceHistoryHandler historyHandler = new
PlaceHistoryHandler(historyMapper);
                historyHandler.register(placeController, eventBus, 
defaultPlace);

                RootPanel.get().add(appWidget);
                // Goes to place represented on URL or default place
                historyHandler.handleCurrentHistory();
        }
}

This compiles fine but when I run it, I see nothing but a blank screen
now. Is there something extra I have to do to initialize a
ComplexPanel? Am I just misunderstanding something? I've tried adding
Widgets and calling setSize to no avail. This is my first GWT project.

Thanks for your time.

Corey

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

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

Reply via email to