/* * Copyright (c) 2010 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.profile.tabs; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.eurekastreams.server.domain.BackgroundItem; import org.eurekastreams.server.domain.BackgroundItemType; import org.eurekastreams.server.domain.Page; import org.eurekastreams.server.search.modelview.DomainGroupModelView; import org.eurekastreams.web.client.events.EventBus; import org.eurekastreams.web.client.events.Observer; import org.eurekastreams.web.client.events.data.AuthorizeUpdateGroupResponseEvent; import org.eurekastreams.web.client.history.CreateUrlRequest; import org.eurekastreams.web.client.ui.Session; import org.eurekastreams.web.client.ui.pages.master.StaticResourceBundle; import org.eurekastreams.web.client.ui.pages.profile.widgets.BackgroundItemLinksPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Hyperlink; import com.google.gwt.user.client.ui.Panel; /** * Panel used on the About tab of a group profile to display information about the given group. */ public class GroupProfileAboutTabPanel extends ProfileAboutTabPanel { /** * Constructor. * * @param group * Group to display. */ public GroupProfileAboutTabPanel(final DomainGroupModelView group) { final HashMap<String, String> basicInfoTabURL = new HashMap<String, String>(); basicInfoTabURL.put("tab", "Basic Info"); CreateUrlRequest target = new CreateUrlRequest(Page.GROUP_SETTINGS, group.getShortName()); target.setParameters(basicInfoTabURL); Panel overviewPanel = createTitledPanel("Overview"); Panel keywordsPanel = createTitledPanel("Keywords"); final HTML noOverview = new HTML("An overview has not been added."); final HTML noKeywords = new HTML("Keywords have not been added."); final Hyperlink overviewHyperlink = new Hyperlink(); final Hyperlink keywordsHyperlink = new Hyperlink(); addLeft(overviewPanel); addRight(keywordsPanel); if (group.getOverview() == null || group.getOverview().trim().isEmpty()) { overviewHyperlink.setText("Add an overview."); overviewHyperlink.setTargetHistoryToken(Session.getInstance().generateUrl(target)); overviewHyperlink.setVisible(false); overviewPanel.add(overviewHyperlink); overviewPanel.add(noOverview); } else { HTML overview = new HTML(group.getOverview()); overview.addStyleName(StaticResourceBundle.INSTANCE.coreCss().profileAboutOverview()); overviewPanel.add(overview); } if (group.getCapabilities() == null || group.getCapabilities().isEmpty()) { keywordsHyperlink.setText("Add keywords."); keywordsHyperlink.setTargetHistoryToken(Session.getInstance().generateUrl(target)); keywordsHyperlink.setVisible(false); keywordsPanel.add(keywordsHyperlink); keywordsPanel.add(noKeywords); } else { List<String> caps = group.getCapabilities(); List<BackgroundItem> bgitems = new ArrayList<BackgroundItem>(); for (String cap : caps) { bgitems.add(new BackgroundItem(cap, BackgroundItemType.NOT_SET)); } keywordsPanel.add(new BackgroundItemLinksPanel("keywords", bgitems)); } // Shows the appropriate "add" links for group coordinators, if necessary. final EventBus eventBus = Session.getInstance().getEventBus(); eventBus.addObserver(AuthorizeUpdateGroupResponseEvent.class, new Observer<AuthorizeUpdateGroupResponseEvent>() { public void update(final AuthorizeUpdateGroupResponseEvent event) { if (event.getResponse()) { if (!overviewHyperlink.getText().isEmpty()) { overviewHyperlink.setVisible(true); noOverview.setVisible(false); } if (!keywordsHyperlink.getText().isEmpty()) { keywordsHyperlink.setVisible(true); noKeywords.setVisible(false); } } } }); } }