/*******************************************************************************
* Copyright (C) 2007, 2013 The kune development team (see CREDITS for details)
* 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.gspace.client.share;
import cc.kune.common.shared.i18n.I18n;
import cc.kune.core.shared.dto.AccessRolDTO;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.gspace.client.share.items.ShareItemFactory;
import cc.kune.lists.shared.ListsToolConstants;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* The Class ShareToListPanel is used as a list of users/groups a document is
* shared to
*/
public class ShareToListPanel extends Composite implements ShareToListView, ShareToListOnItemRemoved {
private static final String SCROLL_HEIGHT = "100px";
private static final String SCROLLWIDTH = "380px";
private final VerticalPanel itemsPanel;
private final ScrollPanel scroll;
private final Label title;
private String typeId;
/**
* Instantiates a new abstract share to list panel.
*
* @param titleText
* the title text
*/
public ShareToListPanel() {
title = new Label();
title.setStyleName("k-sharelist-title");
final VerticalPanel vp = new VerticalPanel();
itemsPanel = new VerticalPanel();
scroll = new ScrollPanel();
scroll.setWidth(SCROLLWIDTH);
DOM.setStyleAttribute(scroll.getElement(), "maxHeight", SCROLL_HEIGHT);
scroll.setStyleName("k-sharelist-scroll");
scroll.add(itemsPanel);
vp.add(title);
vp.add(scroll);
initWidget(vp);
}
@Override
public void addAdmin(final GroupDTO group) {
addItemForSomeRol(group, AccessRolDTO.Administrator);
}
@Override
public void addAdmin(final GroupDTO group, final boolean isMe) {
addItemForSomeRol(group, AccessRolDTO.Administrator, isMe);
}
@Override
public void addEditableByAnyone() {
itemsPanel.add(ShareItemFactory.getContentEditableByAnyone().with(true));
}
@Override
public void addEditor(final GroupDTO group) {
addItemForSomeRol(group, AccessRolDTO.Editor);
}
private void addItemForSomeRol(final GroupDTO group, final AccessRolDTO rol) {
addItemForSomeRol(group, rol, false);
}
private void addItemForSomeRol(final GroupDTO group, final AccessRolDTO rol, final boolean isMe) {
if (typeId.equals(ListsToolConstants.TYPE_LIST)) {
itemsPanel.add(ShareItemFactory.createListItem().with(rol, group, isMe));
} else {
itemsPanel.add(ShareItemFactory.createContentItem().with(rol, group, isMe));
}
}
@Override
public void addNotEditableByOthers() {
itemsPanel.add(ShareItemFactory.getContentEditableByAnyone().with(false));
}
@Override
public void addNotVisibleByOthers() {
if (typeId.equals(ListsToolConstants.TYPE_LIST)) {
itemsPanel.add(ShareItemFactory.getListPublicByAnyone().with(false));
} else {
itemsPanel.add(ShareItemFactory.getContentVisibleByAnyone().with(false));
}
}
@Override
public void addOwner(final GroupDTO owner) {
itemsPanel.add(ShareItemFactory.getOwner().of(owner).with(typeId));
}
@Override
public void addParticipant(final String waveParticipant) {
addParticipant(waveParticipant, false);
}
@Override
public void addParticipant(final String waveParticipant, final boolean isCreator) {
itemsPanel.add(ShareItemFactory.getParticipant().of(waveParticipant, typeId, this, isCreator));
}
@Override
public void addViewer(final GroupDTO group) {
addItemForSomeRol(group, AccessRolDTO.Viewer);
}
@Override
public void addVisibleByAnyone() {
if (typeId.equals(ListsToolConstants.TYPE_LIST)) {
itemsPanel.add(ShareItemFactory.getListPublicByAnyone().with(true));
} else {
itemsPanel.add(ShareItemFactory.getContentVisibleByAnyone().with(true));
}
}
@Override
public void clear() {
scroll.setVerticalScrollPosition(0);
itemsPanel.clear();
}
@Override
public IsWidget getView() {
return this;
}
@Override
public void onRemove(final IsWidget widget) {
itemsPanel.remove(widget);
}
@Override
public void setTypeId(final String typeId) {
this.typeId = typeId;
final String titleText;
if (typeId.equals(ListsToolConstants.TYPE_LIST)) {
titleText = I18n.t("members:");
} else {
titleText = I18n.t("who can access:");
}
title.setText(titleText);
}
}