/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.explorer.client; import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.activity.shared.ActivityManager; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceChangeEvent; import com.google.gwt.place.shared.PlaceController; import com.google.gwt.place.shared.PlaceHistoryHandler; import com.google.gwt.place.shared.PlaceHistoryHandler.DefaultHistorian; import com.google.gwt.place.shared.PlaceHistoryHandler.Historian; import com.google.gwt.place.shared.PlaceHistoryMapper; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.RootPanel; import com.google.inject.Inject; import com.sencha.gxt.explorer.client.app.mvp.ExplorerPlaceHistoryMapper; import com.sencha.gxt.explorer.client.app.place.ExamplePlace; import com.sencha.gxt.explorer.client.app.ui.ExampleDetailView; import com.sencha.gxt.explorer.client.app.ui.ExampleListView; import com.sencha.gxt.explorer.client.app.ui.OverviewExample; import com.sencha.gxt.explorer.client.model.Example; import com.sencha.gxt.explorer.client.model.ExampleModel; public class ExplorerApp implements ExampleListView.Presenter, ExampleDetailView.Presenter { private static final Logger log = Logger.getLogger(ExplorerApp.class.getName()); public static final String OVERVIEW = "Overview"; @Inject private EventBus eventBus; @Inject private PlaceController placeController; @Inject private ActivityMapper activityMapper; @Inject private ExplorerShell shell; @Inject private ExampleListView listView; @Inject private ExampleDetailView detailView; @Inject private ExampleModel exampleModel; public void run() { init(); } @SuppressWarnings("deprecation") private void init() { GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { public void onUncaughtException(Throwable e) { Window.alert("Error: " + e.getMessage()); log.log(Level.SEVERE, e.getMessage(), e); e.printStackTrace(); } }); // Start ActivityManager for the main widget with our ActivityMapper ActivityManager activityManager = new ActivityManager(activityMapper, eventBus); activityManager.setDisplay(shell); // Start PlaceHistoryHandler with our PlaceHistoryMapper ExplorerPlaceHistoryMapper historyMapper = GWT.create(ExplorerPlaceHistoryMapper.class); Historian historian = (Historian) GWT.create(DefaultHistorian.class); final PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper, historian); historyHandler.register(placeController, eventBus, Place.NOWHERE); listView.setPresenter(this); detailView.setPresenter(this); eventBus.addHandler(PlaceChangeEvent.TYPE, listView); // eventBus.addHandler(PlaceChangeEvent.TYPE, detailView); Place newPlace = handleHistoryToken(historyMapper, historian.getToken()); Example example = exampleModel.findExample(OVERVIEW.toLowerCase()); OverviewExample oExample = (OverviewExample)example.getExample(); oExample.setPlaceController(placeController); oExample.loadData(exampleModel); detailView.showExample(example); RootPanel.get().add(shell); // Goes to place represented on URL or default place // historyHandler.handleCurrentHistory(); placeController.goTo(newPlace); } private Place handleHistoryToken(PlaceHistoryMapper mapper, String token) { Place newPlace = null; if ("".equals(token)) { token = "ExamplePlace:" + OVERVIEW.toLowerCase(); } if (newPlace == null) { newPlace = mapper.getPlace(token); } return newPlace; } @Override public void selectExample(Example ex) { placeController.goTo(new ExamplePlace(ex.getId())); } }