enhancements on changing permissions
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace@91620 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
3f83870f01
commit
60426d513d
|
@ -71,6 +71,8 @@ import org.gcube.portlets.user.workspace.client.event.SearchTextEvent;
|
|||
import org.gcube.portlets.user.workspace.client.event.SearchTextEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SendMessageEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.TrashEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.TrashEvent.TRASHOPERATION;
|
||||
import org.gcube.portlets.user.workspace.client.event.TrashEventHandler;
|
||||
|
@ -83,6 +85,7 @@ import org.gcube.portlets.user.workspace.client.model.FileModel;
|
|||
import org.gcube.portlets.user.workspace.client.model.FolderModel;
|
||||
import org.gcube.portlets.user.workspace.client.model.ScopeModel;
|
||||
import org.gcube.portlets.user.workspace.client.view.WorskpacePortlet;
|
||||
import org.gcube.portlets.user.workspace.client.view.dialog.DialogPermission;
|
||||
import org.gcube.portlets.user.workspace.client.view.panels.GxtBorderLayoutPanel;
|
||||
import org.gcube.portlets.user.workspace.client.view.panels.GxtItemsPanel;
|
||||
import org.gcube.portlets.user.workspace.client.view.trash.WindowTrash;
|
||||
|
@ -920,6 +923,36 @@ public class AppController implements SubscriberInterface {
|
|||
loadBreadcrumbByFileModel(loadBreadcrumbEvent.getFileModel(), true);
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(SettingPermissionEvent.TYPE, new SettingPermissionEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onPermissionSetting(SettingPermissionEvent settingPermissionEvent) {
|
||||
|
||||
final DialogPermission dialog = settingPermissionEvent.getDialogPermission();
|
||||
FileModel folder = settingPermissionEvent.getSourceFile();
|
||||
dialog.mask("Changing permissions");
|
||||
if(dialog!=null && folder!=null && dialog.getSelectedACL().getId()!=null){
|
||||
|
||||
AppControllerExplorer.rpcWorkspaceService.setACLForVRE(folder.getIdentifier(), dialog.getSelectedACL().getId(), new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
dialog.hide();
|
||||
new MessageBoxAlert("Error", "Sorry, an error occurred on setting permission",null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
dialog.unmask();
|
||||
dialog.hide();
|
||||
new InfoDisplay("Permission updated", "The permissions have been changed correctly");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void accountingSetItemAsRead(boolean read) {
|
||||
|
|
|
@ -17,6 +17,7 @@ public class ConstantsPortlet {
|
|||
public static final String UPLOADFILE = "Upload";
|
||||
public static final String DOWNLOADITEM = "Download";
|
||||
public static final String UPLOADARCHIVE = "Upload Archive";
|
||||
public static final String CHANGEPERMISSION = "Change Permission";
|
||||
|
||||
//USED IN HTTP GET AS PARAMETERS
|
||||
public static final String GET_SEARCH_PARAMETER ="search";
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package org.gcube.portlets.user.workspace.client.event;
|
||||
|
||||
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
|
||||
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
||||
import org.gcube.portlets.user.workspace.client.view.dialog.DialogPermission;
|
||||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public class SettingPermissionEvent extends GwtEvent<SettingPermissionEventHandler> {
|
||||
public static Type<SettingPermissionEventHandler> TYPE = new Type<SettingPermissionEventHandler>();
|
||||
|
||||
private FileModel targetFile = null;
|
||||
|
||||
private DialogPermission dialogPermission;
|
||||
|
||||
|
||||
public SettingPermissionEvent(FileModel target, DialogPermission dialog) {
|
||||
this.targetFile = (FileGridModel) target;
|
||||
this.dialogPermission = dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type<SettingPermissionEventHandler> getAssociatedType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatch(SettingPermissionEventHandler handler) {
|
||||
handler.onPermissionSetting(this);
|
||||
|
||||
}
|
||||
|
||||
public FileModel getSourceFile() {
|
||||
return targetFile;
|
||||
}
|
||||
|
||||
public DialogPermission getDialogPermission() {
|
||||
return dialogPermission;
|
||||
}
|
||||
|
||||
public void setDialogPermission(DialogPermission dialogPermission) {
|
||||
this.dialogPermission = dialogPermission;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.gcube.portlets.user.workspace.client.event;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public interface SettingPermissionEventHandler extends EventHandler {
|
||||
void onPermissionSetting(SettingPermissionEvent settingPermissionEvent);
|
||||
}
|
|
@ -0,0 +1,188 @@
|
|||
package org.gcube.portlets.user.workspace.client.view.dialog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.user.workspace.client.AppController;
|
||||
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
|
||||
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.PanelTogglePermission;
|
||||
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
|
||||
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.HorizontalPanel;
|
||||
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
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 PanelTogglePermission permission;
|
||||
private HorizontalPanel hpPermission = null;
|
||||
private FileModel folder;
|
||||
|
||||
private DialogPermission INSTANCE = this;
|
||||
|
||||
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 set permission to VRE Folder
|
||||
*/
|
||||
public DialogPermission(FileModel folder) {
|
||||
|
||||
this.folder = folder;
|
||||
|
||||
Label labelProperty = new Label("Permissions");
|
||||
|
||||
hpPermission.add(labelProperty);
|
||||
|
||||
hpPermission.mask("Permission Control");
|
||||
|
||||
|
||||
AsyncCallback<InfoContactModel> callcack = new AsyncCallback<InfoContactModel>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
|
||||
hpPermission.unmask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(InfoContactModel result) {
|
||||
permissionControl(result.getLogin(), true);
|
||||
hpPermission.unmask();
|
||||
}
|
||||
};
|
||||
|
||||
getOwner(folder.getIdentifier(), callcack);
|
||||
|
||||
AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback<List<WorkspaceACL>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<WorkspaceACL> result) {
|
||||
permission = new PanelTogglePermission(result);
|
||||
hpPermission.add(permission);
|
||||
hpPermission.layout();
|
||||
layout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
|
||||
}
|
||||
});
|
||||
|
||||
initLayout(folder.getName());
|
||||
this.setIcon(Resources.getIconSharedFolder());
|
||||
setHeading("Set permissions to folder: " + folder.getName());
|
||||
|
||||
setWidth(widthDialog);
|
||||
setButtons(Dialog.OKCANCEL);
|
||||
|
||||
add(hpPermission);
|
||||
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) {
|
||||
|
||||
AppController.getEventBus().fireEvent(new SettingPermissionEvent(folder, INSTANCE));
|
||||
// hide();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void permissionControl(String owner, boolean showAlert){
|
||||
GWT.log("DialogPermission control compare between owner: "+owner +" and my login: "+AppControllerExplorer.myLogin);
|
||||
|
||||
if(AppControllerExplorer.myLogin.compareToIgnoreCase(owner)!=0){
|
||||
enableFormDialog(false);
|
||||
if(showAlert)
|
||||
new MessageBoxAlert("Permission denied", "You have no permissions to change sharing. You are not owner of \""+folder.getName()+"\"", null);
|
||||
}else{
|
||||
enableFormDialog(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void enableFormDialog(boolean bool){
|
||||
getButtonById(Dialog.OK).setEnabled(bool);
|
||||
|
||||
if(permission!=null)
|
||||
permission.setEnabled(bool);
|
||||
}
|
||||
|
||||
public void getOwner(final String sharedFolderId,final AsyncCallback<InfoContactModel> callback) {
|
||||
|
||||
AppControllerExplorer.rpcWorkspaceService.getOwnerByItemId(sharedFolderId, new AsyncCallback<InfoContactModel>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log("an error occured in get Owner by Id "+sharedFolderId + " "+caught.getMessage());
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on owner property",null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(InfoContactModel result) {
|
||||
callback.onSuccess(result);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public WorkspaceACL getSelectedACL(){
|
||||
if(permission!=null)
|
||||
return permission.getSelectedACL();
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -25,6 +25,7 @@ import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum
|
|||
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
|
||||
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
||||
import org.gcube.portlets.user.workspace.client.resources.Resources;
|
||||
import org.gcube.portlets.user.workspace.client.view.dialog.DialogPermission;
|
||||
import org.gcube.portlets.user.workspace.client.view.grids.GxtGridFilterGroupPanel;
|
||||
import org.gcube.portlets.user.workspace.client.view.tree.CutCopyAndPaste;
|
||||
import org.gcube.portlets.user.workspace.client.view.tree.CutCopyAndPaste.OperationType;
|
||||
|
@ -68,6 +69,7 @@ public class GxtToolBarItemFunctionality {
|
|||
private Button btnCopyItem;
|
||||
private Button btnPasteItem;
|
||||
private Button btnCutItem;
|
||||
private Button btnSetPermission;
|
||||
|
||||
public GxtToolBarItemFunctionality() {
|
||||
initToolBar();
|
||||
|
@ -220,6 +222,14 @@ public class GxtToolBarItemFunctionality {
|
|||
// toolBar.add(new SeparatorToolItem());
|
||||
// toolBar.add(new SeparatorToolItem());
|
||||
|
||||
btnSetPermission= new Button(ConstantsPortlet.CHANGEPERMISSION,
|
||||
Resources.getIconWriteAll());
|
||||
btnSetPermission.setScale(ButtonScale.SMALL);
|
||||
btnSetPermission.setIconAlign(IconAlign.TOP);
|
||||
btnSetPermission.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
||||
|
||||
toolBar.add(btnSetPermission);
|
||||
|
||||
|
||||
//TODO OLD CODE
|
||||
toggleGroup = new ToggleButton();
|
||||
|
@ -448,6 +458,22 @@ public class GxtToolBarItemFunctionality {
|
|||
}
|
||||
});
|
||||
|
||||
btnSetPermission.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
||||
|
||||
@Override
|
||||
public void componentSelected(ButtonEvent ce) {
|
||||
|
||||
final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem();
|
||||
|
||||
if(fileGridModel!=null && fileGridModel.isVreFolder()){
|
||||
DialogPermission dialog = new DialogPermission(fileGridModel);
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
btnDownloadFile.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
||||
|
||||
@Override
|
||||
|
@ -578,6 +604,7 @@ public class GxtToolBarItemFunctionality {
|
|||
this.btnPublicLink.disable();
|
||||
this.btnGetSharedLink.disable();
|
||||
this.btnOpen.enable();
|
||||
this.btnSetPermission.disable();
|
||||
|
||||
if(target!=null){
|
||||
|
||||
|
@ -642,6 +669,7 @@ public class GxtToolBarItemFunctionality {
|
|||
if(target!=null && target.isVreFolder()){
|
||||
this.btnRemoveItem.disable();
|
||||
this.btnRenameItem.disable();
|
||||
this.btnSetPermission.enable();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -656,6 +684,7 @@ public class GxtToolBarItemFunctionality {
|
|||
this.btnOpen.disable();
|
||||
this.btnCopyItem.disable();
|
||||
this.btnCutItem.disable();
|
||||
this.btnSetPermission.disable();
|
||||
// this.btnGetInfo.disable();
|
||||
// this.btnGetSharedLink.disable();
|
||||
} else {
|
||||
|
@ -665,6 +694,7 @@ public class GxtToolBarItemFunctionality {
|
|||
this.btnOpen.enable();
|
||||
this.btnCopyItem.enable();
|
||||
this.btnCutItem.enable();
|
||||
this.btnSetPermission.enable();
|
||||
// this.btnGetInfo.enable();
|
||||
}
|
||||
|
||||
|
@ -693,6 +723,7 @@ public class GxtToolBarItemFunctionality {
|
|||
this.btnOpen.setEnabled(!active);
|
||||
this.btnGetSharedLink.setEnabled(!active);
|
||||
this.btnPublicLink.setEnabled(!active);
|
||||
this.btnSetPermission.setEnabled(!active);
|
||||
|
||||
//ONLY ENABLED
|
||||
this.btnRemoveItem.setEnabled(active);
|
||||
|
|
Loading…
Reference in New Issue