Make ReportPlace usable.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / mvp / DataActivityMapper.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.ClientFactory;
23 import org.glom.web.client.activity.DetailsActivity;
24 import org.glom.web.client.activity.ListActivity;
25 import org.glom.web.client.activity.ReportActivity;
26 import org.glom.web.client.place.DetailsPlace;
27 import org.glom.web.client.place.HasRecordsPlace;
28 import org.glom.web.client.place.ListPlace;
29 import org.glom.web.client.place.ReportPlace;
30
31 import com.google.gwt.activity.shared.Activity;
32 import com.google.gwt.activity.shared.ActivityMapper;
33 import com.google.gwt.place.shared.Place;
34
35 /**
36  *
37  */
38 public class DataActivityMapper implements ActivityMapper {
39
40         private ClientFactory clientFactory;
41
42         /**
43          * ActivityMapper associates each Place with its corresponding {@link Activity}
44          * 
45          * @param clientFactory
46          *            Factory to be passed to activities
47          */
48         public DataActivityMapper(ClientFactory clientFactory) {
49                 this.clientFactory = clientFactory;
50         }
51
52         /**
53          * Map each Place to its corresponding Activity.
54          */
55         @Override
56         public Activity getActivity(Place place) {
57                 if (place instanceof ListPlace)
58                         return new ListActivity((HasRecordsPlace) place, clientFactory);
59                 if (place instanceof DetailsPlace)
60                         return new DetailsActivity((DetailsPlace) place, clientFactory);
61                 if (place instanceof ReportPlace)
62                         return new ReportActivity((ReportPlace) place, clientFactory);
63
64                 return null;
65         }
66
67 }