/*******************************************************************************
* Copyright (c) 2012 Kai Toedter and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Kai Toedter - initial API and implementation
******************************************************************************/
package com.toedter.gwt.demo.contacts.client;
import com.google.gwt.activity.shared.ActivityManager;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.place.shared.PlaceHistoryHandler;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.SplitLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.EventBus;
import com.toedter.gwt.demo.contacts.client.mvp.AppPlaceHistoryMapper;
import com.toedter.gwt.demo.contacts.client.mvp.CenterActivityMapper;
import com.toedter.gwt.demo.contacts.client.mvp.NorthActivityMapper;
import com.toedter.gwt.demo.contacts.client.mvp.WestActivityMapper;
import com.toedter.gwt.demo.contacts.client.place.ContactPlace;
public class ContactsDemo implements EntryPoint {
private final Place defaultPlace = new ContactPlace("");
private final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
private final SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel();
private final SimplePanel centerPanel = new SimplePanel();
private final SimplePanel westPanel = new SimplePanel();
private final SimplePanel northPanel = new SimplePanel();
AcceptsOneWidget northDisplay = new AcceptsOneWidget() {
@Override
public void setWidget(IsWidget activityWidget) {
Widget widget = Widget.asWidgetOrNull(activityWidget);
northPanel.setVisible(widget != null);
northPanel.setWidget(widget);
}
};
AcceptsOneWidget westDisplay = new AcceptsOneWidget() {
double oldSize = 223.0; // TODO store real size dynamically
@Override
public void setWidget(IsWidget activityWidget) {
Widget widget = Widget.asWidgetOrNull(activityWidget);
if (widget == null) {
splitLayoutPanel.setWidgetSize(westPanel, 0);
} else {
splitLayoutPanel.setWidgetSize(westPanel, oldSize);
}
westPanel.setVisible(widget != null);
westPanel.setWidget(widget);
}
};
AcceptsOneWidget centerDisplay = new AcceptsOneWidget() {
@Override
public void setWidget(IsWidget activityWidget) {
Widget widget = Widget.asWidgetOrNull(activityWidget);
centerPanel.setVisible(widget != null);
centerPanel.setWidget(widget);
}
};
private IClientFactory clientFactory;
@Override
public void onModuleLoad() {
northPanel.setStyleName("darkGreyBackground");
westPanel.setStyleName("greyBackground");
centerPanel.setStyleName("greyBackground");
splitLayoutPanel.addWest(westPanel, 223);
splitLayoutPanel.add(centerPanel);
splitLayoutPanel.setStyleName("gwt-SplitLayoutPanel");
dockLayoutPanel.addNorth(northPanel, 4.5);
dockLayoutPanel.add(splitLayoutPanel);
clientFactory = GWT.create(IClientFactory.class);
EventBus eventBus = clientFactory.getEventBus();
PlaceController placeController = clientFactory.getPlaceController();
// Start NorthActivityManager for the north widget with the
// NorthActivityMapper
ActivityMapper northActivityMapper = new NorthActivityMapper(clientFactory);
ActivityManager northActivityManager = new ActivityManager(northActivityMapper, eventBus);
northActivityManager.setDisplay(northDisplay);
// Start CenterActivityManager for the center widget with the
// CenterActivityMapper
ActivityMapper centerActivityMapper = new CenterActivityMapper(clientFactory);
ActivityManager centerActivityManager = new ActivityManager(centerActivityMapper, eventBus);
centerActivityManager.setDisplay(centerDisplay);
// Start WestActivityManager for the west widget with the
// WestActivityMapper
ActivityMapper westActivityMapper = new WestActivityMapper(clientFactory);
ActivityManager westActivityManager = new ActivityManager(westActivityMapper, eventBus);
westActivityManager.setDisplay(westDisplay);
// Start PlaceHistoryHandler with our PlaceHistoryMapper
AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class);
PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper);
historyHandler.register(placeController, eventBus, defaultPlace);
RootLayoutPanel.get().add(dockLayoutPanel);
// Goes to place represented on URL or default place
historyHandler.handleCurrentHistory();
}
/*
* For better UI testability with gwt-test-utils
*/
public IClientFactory getClientFactory() {
return clientFactory;
}
}