/* * Copyright (c) 2010-2011 Lockheed Martin Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.eurekastreams.web.client.ui.pages.master; import java.util.List; import org.eurekastreams.server.domain.Page; import org.eurekastreams.web.client.history.CreateUrlRequest; import org.eurekastreams.web.client.ui.ActionExecutorPanel; import org.eurekastreams.web.client.ui.Session; import org.eurekastreams.web.client.ui.pages.NotificationSettingsPage; import org.eurekastreams.web.client.ui.pages.activity.ActivityContent; import org.eurekastreams.web.client.ui.pages.discover.DiscoverContent; import org.eurekastreams.web.client.ui.pages.metrics.MetricsSummaryContent; import org.eurekastreams.web.client.ui.pages.oauth.OAuthAuthorizeContent; import org.eurekastreams.web.client.ui.pages.profile.settings.CreateGroupPanel; import org.eurekastreams.web.client.ui.pages.profile.settings.GroupProfileSettingsPanel; import org.eurekastreams.web.client.ui.pages.profile.settings.PersonalProfileSettingsPanel; import org.eurekastreams.web.client.ui.pages.search.SearchContent; import org.eurekastreams.web.client.ui.pages.settings.SettingsContent; import org.eurekastreams.web.client.ui.pages.start.StartPageContent; import org.eurekastreams.web.client.ui.pages.start.gallery.GalleryContent; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.RootPanel; /** * Creates a page given a page and view. * */ public class PageFactory { /** * Creates a page given a page and view. * * @param page * the page. * @param views * the views. * @param contentPanel * panel to add page to. * @return the page. */ public String createPage(final Page page, final List<String> views, final FlowPanel contentPanel) { RootPanel.get().setStyleName(""); String viewStr = ""; if (views.size() > 0) { viewStr = views.get(0); } final String view = viewStr; switch (page) { case ACTION: Session.getInstance().setPageTitle("Action"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new ActionExecutorPanel(Session.getInstance().getActionProcessor(), view)); } }); break; case SEARCH: Session.getInstance().setPageTitle("Search"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new SearchContent()); } }); break; case SETTINGS: Session.getInstance().setPageTitle("Settings"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new SettingsContent(Session.getInstance().getActionProcessor())); } }); break; case AUTHORIZE: GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new OAuthAuthorizeContent(Session.getInstance().getActionProcessor(), view)); } }); break; case GALLERY: Session.getInstance().setPageTitle("Gallery"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new GalleryContent()); } }); break; case ACTIVITY: Session.getInstance().setPageTitle("Activity"); contentPanel.add(new ActivityContent()); break; case PEOPLE_LEGACY: if (Session.getInstance().getHistoryHandler().getParameters().containsKey("activityId")) { return "activity/" + Session.getInstance().getHistoryHandler().getParameters().get("activityId"); } else { return Session.getInstance().generateUrl(new CreateUrlRequest(Page.PEOPLE, views)); } case GROUPS_LEGACY: if (Session.getInstance().getHistoryHandler().getParameters().containsKey("activityId")) { return "activity/" + Session.getInstance().getHistoryHandler().getParameters().get("activityId"); } else { return Session.getInstance().generateUrl(new CreateUrlRequest(Page.GROUPS, views)); } case PERSONAL_SETTINGS: Session.getInstance().setPageTitle("Settings"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new PersonalProfileSettingsPanel()); } }); break; case GROUP_SETTINGS: Session.getInstance().setPageTitle("Settings"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new GroupProfileSettingsPanel(view)); } }); break; case NEW_GROUP: Session.getInstance().setPageTitle("New Group"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new CreateGroupPanel(view)); } }); break; case METRICS: Session.getInstance().setPageTitle("Metrics"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new MetricsSummaryContent(view)); } }); break; case DISCOVER: Session.getInstance().setPageTitle("Discover"); GWT.runAsync(new RunAsyncCallback() { public void onFailure(final Throwable reason) { } public void onSuccess() { contentPanel.add(new DiscoverContent()); } }); break; case NOTIFICATION_SETTINGS: Session.getInstance().setPageTitle("Notification Settings"); contentPanel.add(new NotificationSettingsPage()); break; default: Session.getInstance().setPageTitle("Start Page"); contentPanel.add(new StartPageContent()); break; } return null; } }