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

168 lines
4.0 KiB
Java
Raw Normal View History

/**
*
*/
package org.gcube.portlets.widgets.workspacesharingwidget.client;
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.DialogShareWItem;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.ACL_TYPE;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Window;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Feb 25, 2014
*
*/
public class WorkspaceSharingController {
public static final WorkspaceSharingServiceAsync rpcWorkspaceSharingService = (WorkspaceSharingServiceAsync) GWT.create(WorkspaceSharingService.class);
private static String myLogin;
private String workspaceItemId;
private boolean shareOnlyOwner;
private ACL_TYPE defaultPermission;
private DialogShareWItem sharingDialog = null;
// /**
// * This dialog doesn't show setting permissions, it use default server permissions
// * @param workspace itemId to share
// */
// public WorkspaceSharingController(String itemId) {
// }
//
/**
* This dialog show setting permissions
* @param itemId workace item id
* @param shareOnlyOwner if true, only owner can share
* @param defaultPermission ACL_TYPE default permission
*/
public WorkspaceSharingController(String itemId, boolean shareOnlyOwner, ACL_TYPE defaultPermission) {
this.workspaceItemId = itemId;
this.shareOnlyOwner = shareOnlyOwner;
this.defaultPermission = defaultPermission;
if(workspaceItemId==null || workspaceItemId.isEmpty()){
MessageBox.alert("Error", "Item id is null or empty", null);
return;
}
initWindow();
if(shareOnlyOwner){
loadMyLogin(true, true);
}else{
loadFileModel(true);
}
}
private void initWindow(){
sharingDialog = new DialogShareWItem();
sharingDialog.setSize(ConstantsSharing.WIDTH_DIALOG+20, ConstantsSharing.HEIGHT_DIALOG+20);
sharingDialog.mask("Loading File from Workspace", ConstantsSharing.LOADINGSTYLE);
}
private void loadFileModel(final boolean showSharingDialog){
rpcWorkspaceSharingService.getFileModelByWorkpaceItemId(workspaceItemId, new AsyncCallback<FileModel>() {
@Override
public void onFailure(Throwable caught) {
sharingDialog.unmask();
MessageBox.alert("Error", caught.getMessage(), null);
}
@Override
public void onSuccess(FileModel result) {
sharingDialog.unmask();
sharingDialog.mask("File loaded", ConstantsSharing.LOADINGSTYLE);
if(showSharingDialog)
updateSharingDialog(result);
}
});
}
/**
*
* @param fileModel
*/
private void updateSharingDialog(FileModel fileModel){
sharingDialog.unmask();
sharingDialog.updateSharingDialog(fileModel, shareOnlyOwner, defaultPermission);
// dialogShareItem.show();
sharingDialog.layout();
}
/**
*
* @param loadFileModel
* @param showSharingDialog
*/
private void loadMyLogin(final boolean loadFileModel, final boolean showSharingDialog) {
rpcWorkspaceSharingService.getMyLogin(new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error on loading my login is empty");
myLogin = "";
}
@Override
public void onSuccess(String result) {
GWT.log("My login is: " + result);
myLogin = result;
if(loadFileModel)
loadFileModel(showSharingDialog);
}
});
}
public static String getMyLogin() {
return myLogin;
}
public String getWorkspaceItemId() {
return workspaceItemId;
}
public boolean isShareOnlyOwner() {
return shareOnlyOwner;
}
public ACL_TYPE getDefaultPermission() {
return defaultPermission;
}
/**
*
* @return
*/
public Window getSharingDialog() {
return sharingDialog;
}
}