/* * * Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.core.client.ws.entheader; import org.gwtbootstrap3.client.ui.html.Text; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import com.google.web.bindery.event.shared.EventBus; import com.gwtplatform.mvp.client.ViewImpl; import br.com.rpa.client._paperelements.PaperButton; import cc.kune.common.client.actions.ui.GuiProvider; import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.ui.WrappedFlowPanel; import cc.kune.common.shared.i18n.I18n; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.avatar.MediumAvatarDecorator; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.sn.GroupMembersUpdatedEvent; import cc.kune.core.client.sn.UserFollowersUpdatedEvent; import cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.gspace.client.armor.GSpaceArmor; /** * The Class EntityHeaderPanel. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ @Singleton public class EntityHeaderPanel extends ViewImpl implements EntityHeaderView { private final MediumAvatarDecorator decorator; /** The download provider. */ private final Provider<ClientFileDownloadUtils> downloadProvider; private final PaperButton followersBtn; private final Text groupLongName; /** The images. */ private final Image logo; private final Element logoShadow; private final Anchor shortNameAnchor; /** The toolbar. */ private final IsActionExtensible toolbar; /** * Instantiates a new entity header panel. * * @param downloadProvider * the download provider * @param images * the images * @param bindings * the bindings * @param armor * the armor * @param entityTextLogo * the entity text logo * @param i18n * the i18n */ @Inject public EntityHeaderPanel(final EventBus eventBus, final Provider<ClientFileDownloadUtils> downloadProvider, final GuiProvider bindings, final GSpaceArmor armor, final I18nTranslationService i18n, final MediumAvatarDecorator decorator) { this.downloadProvider = downloadProvider; this.decorator = decorator; toolbar = armor.getHeaderActionsTopToolbar(); logo = armor.getGroupLogo(); logo.removeFromParent(); final WrappedFlowPanel groupNamePanel = armor.getGroupName(); groupLongName = new Text(); groupNamePanel.add(groupLongName); logoShadow = armor.getLogoShadow(); final WrappedFlowPanel shorNamePanel = armor.getGroupShortName(); shortNameAnchor = new Anchor(); shorNamePanel.add(shortNameAnchor); decorator.setWidget(logo); logoShadow.appendChild(((Widget) decorator).getElement()); followersBtn = (PaperButton) armor.getFollowersButton(); eventBus.addHandler(GroupMembersUpdatedEvent.getType(), new GroupMembersUpdatedEvent.GroupMembersUpdatedHandler() { @Override public void onGroupMembersUpdated(final GroupMembersUpdatedEvent event) { final int members = event.getMembers(); followersBtn.setText(I18n.t(members == 1 ? "[%d] member" : "[%d] members", members)); } }); eventBus.addHandler(UserFollowersUpdatedEvent.getType(), new UserFollowersUpdatedEvent.UserFollowersUpdatedHandler() { @Override public void onUserFollowersUpdated(final UserFollowersUpdatedEvent event) { final int followers = event.getFollowers(); // followersBtn.setText(I18n.t(followers == 1 ? "One follower" : // "[%d] followers", followers)); followersBtn.setText(I18n.t(followers == 1 ? "One buddy" : "[%d] buddies", followers)); } }); } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #addAction(cc.kune.common.client.actions.ui.descrip.GuiActionDescrip) */ @Override public void addAction(final GuiActionDescrip descriptor) { toolbar.add(descriptor); } @Override public void addAll(final GuiActionDescCollection actionsRegistry) { toolbar.addAll(actionsRegistry); } /* * (non-Javadoc) * * @see com.gwtplatform.mvp.client.View#asWidget() */ @Override public Widget asWidget() { return null; } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #setLogoImage(cc.kune.core.shared.dto.GroupDTO, boolean) */ @Override public void setLogoImage(final GroupDTO group) { final String shortName = group.getShortName(); final String url = downloadProvider.get().getLogoImageUrl(shortName); logo.setUrl(url); } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #setLogoImageVisible(boolean) */ @Override public void setLogoImageVisible(final boolean visible) { logo.setVisible(visible); logoShadow.getStyle().setDisplay(visible ? Display.BLOCK : Display.NONE); } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #setLogoText(java.lang.String) */ @Override public void setLogoText(final String groupName, final String groupShortName) { groupLongName.setText(groupName); shortNameAnchor.setText("#" + groupShortName); shortNameAnchor.setHref("#!" + groupShortName); } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #setOnlineStatusGroup(java.lang.String) */ @Override public void setOnlineStatusGroup(final String group) { decorator.setItem(group); } /* * (non-Javadoc) * * @see * cc.kune.core.client.ws.entheader.EntityHeaderPresenter.EntityHeaderView * #setOnlineStatusVisible(boolean) */ @Override public void setOnlineStatusVisible(final boolean visible) { decorator.setDecoratorVisible(visible); } @Override public void toolbarClear() { toolbar.clear(); } }