workspace-sharing-widget/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSmartSharingContro...

141 lines
3.9 KiB
Java

/**
*
*/
package org.gcube.portlets.widgets.workspacesharingwidget.client;
import java.util.List;
import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingService;
import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingServiceAsync;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.google.gwt.core.client.GWT;
/**
* @author Francesco Mangiacrapa Feb 25, 2014
*
*/
public class WorkspaceSmartSharingController {
public static final WorkspaceSharingServiceAsync rpcWorkspaceSharingService = (WorkspaceSharingServiceAsync) GWT
.create(WorkspaceSharingService.class);
private SmartShare smartShare = null;
private List<CredentialModel> listAlreadySharedContact;
private FileModel fileModel;
private boolean readGroupsFromHL;
private boolean readGroupsFromPortal;
/**
*
* @param file
* - a fake file to display the field name ("filename") into
* dialog
* @param listAlreadySharedContact
* - list of already shared contacts to show into dialog
*
* base constructor by default does not retrieve the groups
*
*/
public WorkspaceSmartSharingController(FileModel file, List<CredentialModel> listAlreadySharedContact) {
this(file, listAlreadySharedContact, false, false);
}
/**
*
* @param file
* - a fake file to display the field name ("filename") into
* dialog
* @param listAlreadySharedContact
* - list of already shared contacts to show into dialog
* @param readGroupsFromHL
* - if true, read group names from HL
* @param readGroupsFromPortal
* - if true, read group names from Portal (as VRE)
*
*/
public WorkspaceSmartSharingController(FileModel file, List<CredentialModel> listAlreadySharedContact,
boolean readGroupsFromHL, boolean readGroupsFromPortal) {
this.listAlreadySharedContact = listAlreadySharedContact;
this.fileModel = file;
this.readGroupsFromHL = readGroupsFromHL;
this.readGroupsFromPortal = readGroupsFromPortal;
this.smartShare = new SmartShare(readGroupsFromHL, readGroupsFromPortal);
this.smartShare.setSize(ConstantsSharing.WIDTH_DIALOG + 20, ConstantsSharing.HEIGHT_DIALOG - 170);
updateSharingDialog();
addListenersSharingDialog();
}
/**
* Example of listeners
*/
private void addListenersSharingDialog() {
smartShare.getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
// if(smartShare.isValidForm(true)){
// //THAT'S OK
//
// smartShare.getSharedListUsers(); //@return the selected
// contacts (as InfoContactModel)
//
// smartShare.getSharedListUsersCredential(); //@return tthe
// selected contacts (as CredentialModel)
//
// for (InfoContactModel contact :
// smartShare.getSharedListUsers()) {
// System.out.println(contact);
// }
//
// for (CredentialModel credential :
// smartShare.getSharedListUsersCredential()) {
// System.out.println(credential);
// }
//
// }
}
});
}
/**
*
* @param fileModel
*/
private void updateSharingDialog() {
smartShare.unmask();
smartShare.updateSharingDialog(fileModel, listAlreadySharedContact);
smartShare.layout();
}
/**
*
* @return SmartShare An extension of gxt dialog 2.2.5
*/
public SmartShare getSharingDialog() {
return smartShare;
}
public boolean isReadGroupsFromHL() {
return readGroupsFromHL;
}
public boolean isReadGroupsFromPortal() {
return readGroupsFromPortal;
}
}