Use Presenter for app navigation.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / OnlineGlom.java
1 /*
2  * Copyright (C) 2010, 2011 Openismus GmbH
3  *
4  * This file is part of GWT-Glom.
5  *
6  * GWT-Glom is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package org.glom.web.client;
21
22 import org.glom.web.client.mvp.AppActivityMapper;
23 import org.glom.web.client.mvp.AppPlaceHistoryMapper;
24 import org.glom.web.client.place.DocumentSelectionPlace;
25
26 import com.google.gwt.activity.shared.ActivityManager;
27 import com.google.gwt.activity.shared.ActivityMapper;
28 import com.google.gwt.core.client.EntryPoint;
29 import com.google.gwt.core.client.GWT;
30 import com.google.gwt.event.shared.EventBus;
31 import com.google.gwt.place.shared.Place;
32 import com.google.gwt.place.shared.PlaceController;
33 import com.google.gwt.place.shared.PlaceHistoryHandler;
34 import com.google.gwt.user.client.ui.RootPanel;
35 import com.google.gwt.user.client.ui.SimplePanel;
36
37 /**
38  * Entry point classes define <code>onModuleLoad()</code>.
39  */
40 public class OnlineGlom implements EntryPoint {
41
42         // The start page.
43         private final Place defaultPlace = new DocumentSelectionPlace();
44         // A container widget that will be managed by the ActivityManager.
45         private final SimplePanel panel = new SimplePanel();
46
47         @Override
48         public void onModuleLoad() {
49                 ClientFactoryImpl clientFactory = GWT.create(ClientFactory.class);
50                 EventBus eventBus = clientFactory.getEventBus();
51                 PlaceController placeController = clientFactory.getPlaceController();
52
53                 // Start the ActivityManager for the main root panel.
54                 ActivityMapper activityMapper = new AppActivityMapper(clientFactory);
55                 ActivityManager activityManager = new ActivityManager(activityMapper, eventBus);
56                 activityManager.setDisplay(panel);
57
58                 // Start PlaceHistoryHandler with our PlaceHistoryMapper
59                 AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class);
60                 PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper);
61                 historyHandler.register(placeController, eventBus, defaultPlace);
62
63                 // Put the container that is managed by the activity manager in the root panel.
64                 RootPanel.get().add(panel);
65
66                 // Goes to the place represented on URL or the default place.
67                 historyHandler.handleCurrentHistory();
68         }
69
70 }