package com.piki.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.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
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.RootLayoutPanel;
import com.piki.client.mvp.HasEventBus;
import com.piki.client.mvp.place.HasPlaceController;
import com.piki.client.mvp.place.PlacePresenterFactory;
import com.piki.client.mvp.place.PresenterActivityMapper;
import com.piki.client.mvp.presenter.text.TextPlace;
import com.piki.client.presenter.PresenterPlaceHistoryMapper;
import com.piki.client.ui.Desktop;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Piki implements EntryPoint {
private static Place defaultPlace = new TextPlace("Welcome");
/**
* This is the entry point method.
*/
public void onModuleLoad() {
EventBus eventBus = new SimpleEventBus();
final PlaceController placeController = new PlaceController(eventBus);
Desktop display = GWT.create(Desktop.class);
if (display instanceof HasEventBus) {
HasEventBus hasEventBus = (HasEventBus) display;
hasEventBus.setEventBus(eventBus);
}
if (display instanceof HasPlaceController) {
HasPlaceController hasPlaceController = (HasPlaceController) display;
hasPlaceController.setPlaceController(placeController);
}
display.initDesktop();
// Start ActivityManager for the main widget with our ActivityMapper
ActivityMapper activityMapper = new PresenterActivityMapper((PlacePresenterFactory) GWT.create(PlacePresenterFactory.class));
ActivityManager activityManager = new ActivityManager(activityMapper, eventBus);
activityManager.setDisplay(display);
// Start PlaceHistoryHandler with our PlaceHistoryMapper
PresenterPlaceHistoryMapper historyMapper= GWT.create(PresenterPlaceHistoryMapper.class);
PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper);
historyHandler.register(placeController, eventBus, defaultPlace);
RootLayoutPanel.get().add(display);
// Goes to the place represented on URL else default place
historyHandler.handleCurrentHistory();
}
}