Thanks! Looking at your code example cleared up the sizing issues.
Dunno if it's the best implementation but I ended up making an app
controller class that handles the application layout, and is used to
hook up the different mappers in the entry point class:
public class AppControllerImpl implements AppController {
private static class LayoutHandler implements
PlaceChangeEvent.Handler {
private AppController app;
public LayoutHandler(AppController app) {
this.app = app;
}
@Override
public void onPlaceChange(PlaceChangeEvent event) {
Place place = event.getNewPlace();
if (place instanceof HomeScreenPlace) {
app.setHomeScreentLayout();
} else if (place instanceof DetailsPlace){
...
} else if (place instanceof SettingsPlace) {
...
} else {
app.setHomeScreenLayout();
}
}
}
private DockLayoutPanel container = new DockLayoutPanel(Unit.PCT);
private SimplePanel header = new SimplePanel();
private SimplePanel side = new SimplePanel();
private SimplePanel main = new SimplePanel();
private SimplePanel footer = new SimplePanel();
public AppControllerImpl(EventBus eventBus) {
container.addNorth(header, 25);
container.addWest(side, 25);
container.addSouth(footer, 25);
container.add(main);
eventBus.addHandler(PlaceChangeEvent.TYPE, new LayoutHandler(this));
}
@Override
public DockLayoutPanel getAppContainer() {
return container;
}
@Override
public AcceptsOneWidget getHeaderDisplay() {
return new AcceptsOneWidget() {
@Override
public void setWidget(IsWidget activityWidget) {
Widget widget = Widget.asWidgetOrNull(activityWidget);
header.setVisible((widget != null));
header.setWidget(widget);
}
};
}
...
@Override
public void setHomeScreenLayout() {
container.setWidgetSize(header, 25);
container.setWidgetSize(footer, 0);
container.setWidgetSize(side, 25);
}
...
}
The app controller is used as follows in the entry point:
public void onModuleLoad() {
ClientFactory factory = GWT.create(ClientFactory.class);
EventBus eventBus = factory.getEventBus();
PlaceController placeController = factory.getPlaceController();
AppController appController = factory.getAppController();
// Start ActivityManager for all display regions with the
ActivityMapper
HeaderActivityMapper headerMapper = new
HeaderActivityMapper(factory);
ActivityManager headerManager = new
ActivityManager(headerMapper, eventBus);
headerManager.setDisplay(appController.getHeaderDisplay());
...
// Start PlaceHistoryHandler with the
PlaceHistoryMapper
AppPlaceHistoryMapper historyMapper=
GWT.create(AppPlaceHistoryMapper.class);
PlaceHistoryHandler historyHandler = new
PlaceHistoryHandler(historyMapper);
historyHandler.register(placeController, eventBus,
defaultPlace);
RootLayoutPanel.get().add(appController.getAppContainer());
historyHandler.handleCurrentHistory();
}
On Jul 12, 4:33 pm, Mauro Bertapelle <
mauro.bertape...@gmail.com>
wrote:
> you may find this thread interesting:
http://groups.google.com/group/google-web-toolkit/browse_thread/threa...