158 lines
4.0 KiB
Java
158 lines
4.0 KiB
Java
package org.gcube.portlets.user.workspace.client.view.sharing;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
|
|
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
|
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
|
|
import org.gcube.portlets.user.workspace.client.resources.Resources;
|
|
import org.gcube.portlets.user.workspace.client.view.sharing.multisuggest.MultiValuePanel;
|
|
import org.gcube.portlets.user.workspace.shared.WorkspaceACL;
|
|
|
|
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
|
|
import com.extjs.gxt.ui.client.Style.Scroll;
|
|
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
|
import com.extjs.gxt.ui.client.event.SelectionListener;
|
|
import com.extjs.gxt.ui.client.widget.Dialog;
|
|
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
|
|
import com.google.gwt.event.shared.HandlerManager;
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
import com.google.gwt.user.client.ui.Label;
|
|
|
|
/**
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
*
|
|
*/
|
|
public class DialogPermission extends Dialog {
|
|
|
|
private int widthDialog = 530;
|
|
private FileModel parentFolder = null;
|
|
private UserStore userStore = new UserStore();
|
|
private MultiValuePanel suggestPanel = new MultiValuePanel(userStore);
|
|
private PanelPermission panelPermission;
|
|
private DialogPermission INSTANCE = this;
|
|
private List<InfoContactModel> listAlreadyShared = new ArrayList<InfoContactModel>(){
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* Compare Login
|
|
*/
|
|
@Override
|
|
public boolean contains(Object o) {
|
|
|
|
if(o==null)
|
|
return false;
|
|
|
|
InfoContactModel contact = (InfoContactModel) o;
|
|
|
|
for (int i = 0; i < listAlreadyShared.size(); i++){
|
|
if (contact.getName().compareTo(listAlreadyShared.get(i).getName())==0)
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
public FileModel getParentFolder() {
|
|
return parentFolder;
|
|
}
|
|
|
|
public void initLayout(String folderParentName){
|
|
FormLayout layout = new FormLayout();
|
|
layout.setLabelWidth(90);
|
|
layout.setDefaultWidth(380);
|
|
setLayout(layout);
|
|
setModal(true);
|
|
setScrollMode(Scroll.AUTOY);
|
|
setBodyStyle("padding: 9px; background: none");
|
|
setWidth(widthDialog);
|
|
setHeight(200);
|
|
setResizable(true);
|
|
setButtonAlign(HorizontalAlignment.CENTER);
|
|
setWidth(widthDialog);
|
|
setButtons(Dialog.OKCANCEL);
|
|
}
|
|
|
|
/**
|
|
* Use to create a new shared folder
|
|
*/
|
|
public DialogPermission(String folderParentName, HandlerManager eventBus) {
|
|
|
|
AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback<List<WorkspaceACL>>() {
|
|
|
|
@Override
|
|
public void onSuccess(List<WorkspaceACL> result) {
|
|
panelPermission = new PanelPermission(result);
|
|
INSTANCE.layout(true);
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
|
|
INSTANCE.add(new Label("Error on recovering ACLs"));
|
|
}
|
|
});
|
|
|
|
initLayout(folderParentName);
|
|
this.setIcon(Resources.getIconSharedFolder());
|
|
setHeading("Set permission to folder: "+folderParentName);
|
|
|
|
setWidth(widthDialog);
|
|
setButtons(Dialog.OKCANCEL);
|
|
|
|
add(panelPermission);
|
|
addListners();
|
|
}
|
|
|
|
public void addListners(){
|
|
|
|
this.getButtonById(Dialog.CANCEL).addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
public void componentSelected(ButtonEvent ce) {
|
|
hide();
|
|
}
|
|
});
|
|
|
|
|
|
this.getButtonById(Dialog.OK).addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
public void componentSelected(ButtonEvent ce) {
|
|
if(isValidForm(false))
|
|
hide();
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param displayAlert
|
|
* @return
|
|
*/
|
|
public boolean isValidForm(boolean displayAlert){
|
|
|
|
/*
|
|
if(getSharedListUsers().size()==0){
|
|
if(displayAlert)
|
|
new MessageBoxAlert("Attention", "You must pick at least one user with which share the folder", null);
|
|
suggestPanel.boxSetFocus();
|
|
return false;
|
|
}*/
|
|
|
|
return true;
|
|
|
|
}
|
|
}
|