diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java index e9feced..35ded34 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java @@ -143,10 +143,9 @@ import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEve import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEventHandler; import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEvent; import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEventHandler; -import org.gcube.portlets.widgets.workspacesharingwidget.client.SmartConstants; -import org.gcube.portlets.widgets.workspacesharingwidget.client.WorkspaceSmartSharingController; -import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare; -import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel; +import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragConstants; +import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact; +import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact.LOAD_CONTACTS_AS; import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.event.BaseEvent; @@ -311,7 +310,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt if(AppControllerExplorer.myLogin.compareToIgnoreCase(infoContactModel.getLogin())==0) showAddAdministratorsDialog(file); else - new MessageBoxAlert("Permission denied", "You have no permissions to add administrators. You are not manager of \""+file.getName()+"\"", null); + new MessageBoxAlert("Permission denied", "You have no permissions to manage administrators. You are not manager of \""+file.getName()+"\"", null); } }); @@ -2110,60 +2109,73 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt */ private void showAddAdministratorsDialog(final FileModel file) { - final org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel internalFile = new org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel(file.getIdentifier(), file.getName(), file.isDirectory()); - - SmartConstants.HEADER_TITLE = "Add Administrators to: "+file.getName(); - SmartConstants.SHARE_WITH_USERS = "Manage with users"; - SmartConstants.ERROR_NO_USER_SELECTED = "You must pick at least one user to add to Administrators"; + SimpleMultiDragConstants.HEADING_DIALOG = "Edit Administrator/s to: "+file.getName(); + SimpleMultiDragConstants.ALL_CONTACTS_LEFT_LIST = "All Contacts"; + SimpleMultiDragConstants.SHARE_WITH_RIGHT_LIST = "New Administrator/s"; - rpcWorkspaceService.getAdministratorsByFolderId(file.getIdentifier(), new AsyncCallback>() { - + final SimpleMultiDragWorkspaceContact multiDragContact = new SimpleMultiDragWorkspaceContact(LOAD_CONTACTS_AS.ADMINISTRATOR, file.getIdentifier(), true, false, true); + final Dialog multidrag = multiDragContact.getMultiDragContact(); + + multidrag.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { + @Override - public void onFailure(Throwable arg0) { - // TODO Auto-generated method stub + public void handleEvent(BaseEvent be) { + List targets = multiDragContact.getTargetContactsWithMyLogin(); - } + if(targets.size()==1){ + MessageBox info = MessageBox.info("Any Administrator/s?", "You have not selected any Administrator, confirm exit?", null); + + info.addCallback(new Listener() { - @Override - public void onSuccess(List admins) { - - List alreadyAdmins = new ArrayList(); - for (InfoContactModel contact : admins) { - alreadyAdmins.add(new CredentialModel(contact.getId(), contact.getLogin(), contact.isGroup())); - } - - WorkspaceSmartSharingController controller = new WorkspaceSmartSharingController(internalFile, alreadyAdmins, false, false); - - final SmartShare sharingWindow = controller.getSharingDialog(); - - sharingWindow.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { - - @Override - public void handleEvent(BaseEvent be) { - - if(sharingWindow.isValidForm(true)){ - - List listUsers = sharingWindow.getSharedListUsers(); //@return the selected contacts (as InfoContactModel) - - if(listUsers!=null && listUsers.size()>0){ - - List logins = new ArrayList(listUsers.size()); - - for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : listUsers) { - logins.add(infoContactModel.getLogin()); - } - - doAddAdministratorToFolderId(file, logins); + public void handleEvent(MessageBoxEvent be) { + //IF NOT CANCELLED + String clickedButton = be.getButtonClicked().getItemId(); + if(clickedButton.equals(Dialog.OK)){ + multidrag.hide(); } } - + }); + + info.show(); + } + + if(targets.size()>1){ + + final List logins = new ArrayList(targets.size()); + String names = "
    "; + for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : targets) { + logins.add(infoContactModel.getLogin()); + names+="
  • "+infoContactModel.getName() +";
  • "; } - }); - - sharingWindow.show(); - + + String tail = "
as new "; + tail += logins.size()>1?"administrators":"administrator"; + tail+= ", confirm?"; + MessageBoxConfirm confirm = new MessageBoxConfirm("Setting new Administrator/s?", "You have selected:
"+names +tail); + + confirm.getMessageBoxConfirm().addCallback(new Listener() { + + public void handleEvent(MessageBoxEvent be) { + + //IF NOT CANCELLED + String clickedButton = be.getButtonClicked().getItemId(); + if(clickedButton.equals(Dialog.YES)){ + doAddAdministratorToFolderId(file, logins); + multidrag.hide(); + } + if(clickedButton.equals(Dialog.CANCEL)){ + multidrag.hide(); + } + + } + }); + + } + } }); + + multidrag.show(); } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java index dd39b9f..2fbca1d 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Icons.java @@ -317,6 +317,9 @@ public interface Icons extends ClientBundle { @Source("icons/add_admin.png") ImageResource addAdmin(); + @Source("icons/admin_keys.png") + ImageResource manageAdmin(); + @Source("icons/specialfolder2.png") ImageResource specialFolder(); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java index 283854a..12b564b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/resources/Resources.java @@ -530,6 +530,13 @@ public class Resources { public static AbstractImagePrototype getIconAddAdministrator() { return AbstractImagePrototype.create(ICONS.addAdmin()); } + + /** + * @return + */ + public static AbstractImagePrototype getIconManageAdministrator() { + return AbstractImagePrototype.create(ICONS.manageAdmin()); + } //ImageResources public static ImageResource getImagePathSeparator(){ diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/admin_keys.png b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/admin_keys.png new file mode 100644 index 0000000..da357f3 Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/admin_keys.png differ diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/tree/ContextMenuTree.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/tree/ContextMenuTree.java index effe804..aa607ab 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/tree/ContextMenuTree.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/tree/ContextMenuTree.java @@ -588,8 +588,8 @@ public class ContextMenuTree { MenuItem addAdministrator = new MenuItem(); // addAdministrator.setId(WorkspaceOperation.ADD_ADMINISTRATOR.getId()); - addAdministrator.setText("Add Administrator/s"); - addAdministrator.setIcon(Resources.getIconAddAdministrator()); + addAdministrator.setText("Manage Administrator/s"); + addAdministrator.setIcon(Resources.getIconManageAdministrator()); addAdministrator.addSelectionListener(new SelectionListener() { public void componentSelected(MenuEvent ce) {