Start moving the existing OnlineGlom code to MVP.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / mvp / AppActivityMapper.java
1 /*
2  * Copyright (C) 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.mvp;
21
22 import org.glom.web.client.ClientFactoryImpl;
23 import org.glom.web.client.activity.OnlineGlomActivity;
24 import org.glom.web.client.place.OnlineGlomPlace;
25
26 import com.google.gwt.activity.shared.Activity;
27 import com.google.gwt.activity.shared.ActivityMapper;
28 import com.google.gwt.place.shared.Place;
29
30 /*
31  * This code is mostly from AppActivityMapper.java in the hellomvp GWT example:
32  *
33  * https://code.google.com/webtoolkit/doc/2.2/DevGuideMvpActivitiesAndPlaces.html
34  */
35 public class AppActivityMapper implements ActivityMapper {
36
37         private final ClientFactoryImpl clientFactory;
38
39         /**
40          * AppActivityMapper associates each Place with its corresponding {@link Activity}
41          * 
42          * @param clientFactory
43          *            Factory to be passed to activities
44          */
45         public AppActivityMapper(ClientFactoryImpl clientFactory) {
46                 super();
47                 this.clientFactory = clientFactory;
48         }
49
50         /**
51          * Map each Place to its corresponding Activity. This would be a great use for GIN.
52          */
53         @Override
54         public Activity getActivity(Place place) {
55                 // This is begging for GIN
56                 if (place instanceof OnlineGlomPlace)
57                         return new OnlineGlomActivity((OnlineGlomPlace) place, clientFactory);
58                 return null;
59         }
60
61 }