/* * 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 org.eurekastreams.server.domain.Page; import org.eurekastreams.web.client.history.CreateUrlRequest; import org.eurekastreams.web.client.jsni.WidgetJSNIFacadeImpl; import org.eurekastreams.web.client.ui.Session; import org.eurekastreams.web.client.ui.common.stream.renderers.ResourceCountWidget.CountType; import org.eurekastreams.web.client.ui.pages.widget.ActorListWidget; import org.eurekastreams.web.client.ui.pages.widget.CommentWidget; import org.eurekastreams.web.client.ui.pages.widget.FullStreamWidget; import org.eurekastreams.web.client.ui.pages.widget.LikeShareWidget; import org.eurekastreams.web.client.ui.pages.widget.ReadStreamWidget; import org.eurekastreams.web.client.ui.pages.widget.ShareActivityWidget; import org.eurekastreams.web.client.ui.pages.widget.ShareWidget; import org.eurekastreams.web.client.ui.pages.widget.UserProfileBadgeWidget; import com.google.gwt.user.client.History; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Widget; /** * Creates a page given a page and view. */ public class ConnectPageFactory { /** * Creates a widget and sets the history to match it. * * @param widgetName * Name of widget desired. * @param util * For getting URL parameters. * @return The widget (or null). */ public Widget createPageWithHistory(final String widgetName, final WidgetJSNIFacadeImpl util) { if ("comment".equals(widgetName)) { String resourceUrl = util.getParameter("resourceurl"); String resourceTitle = util.getParameter("resourcetitle"); String siteUrl = util.getParameter("siteurl"); String siteTitle = util.getParameter("sitetitle"); setHistory(new CreateUrlRequest(Page.WIDGET_COMMENT, "resource")); return new CommentWidget(resourceUrl, resourceUrl, resourceTitle, siteUrl, siteTitle); } else if ("readstream".equals(widgetName)) { String request = util.getParameter("request"); setHistory(new CreateUrlRequest(Page.WIDGET_READ_STREAM, "request")); return new ReadStreamWidget(request); } else if ("fullstream".equals(widgetName)) { String request = util.getParameter("request"); setHistory(new CreateUrlRequest(Page.WIDGET_FULL_STREAM, "request")); return new FullStreamWidget(request); } else if ("badge".equals(widgetName)) { String accountId = util.getParameter("accountid"); return new UserProfileBadgeWidget(accountId); } else if ("likeshare".equals(widgetName)) { String resourceId = util.getParameter("resourceurl"); String title = util.getParameter("title"); String desc = util.getParameter("desc"); String[] thumbs = util.getParameter("thumbs").split(","); return new LikeShareWidget(resourceId, title, desc, thumbs); } else if ("sharedialog".equals(widgetName)) { String resourceId = util.getParameter("resourceurl"); String title = util.getParameter("title"); String desc = util.getParameter("desc"); String thumbStr = util.getParameter("thumbs"); String[] thumbs = null; if (!thumbStr.isEmpty()) { thumbs = thumbStr.split(","); } return new ShareWidget(resourceId, title, desc, thumbs); } else if ("actordialog".equals(widgetName)) { String resourceId = util.getParameter("resourceurl"); String countTypeStr = util.getParameter("actortype"); CountType countType = "likes".equals(countTypeStr) ? CountType.LIKES : CountType.SHARES; return new ActorListWidget(countType, resourceId); } else if ("shareactivitydialog".equals(widgetName)) { String title = util.getParameter("title"); Window.setTitle(title == null ? "Share" : title); try { Long activityId = Long.parseLong(util.getParameter("activityid")); return new ShareActivityWidget(activityId); } catch (Exception ex) { // TODO: better error handling return null; } } return null; } /** * Sets URL and triggers history. * * @param request * Description of URL to build. */ private void setHistory(final CreateUrlRequest request) { String token = Session.getInstance().generateUrl(request); History.newItem(token, true); } }