From a06d57950a58b06865b1982c7ae64023508ddea6 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 23 Sep 2014 14:15:36 +0000 Subject: [PATCH] enhancements on "Edit Administrators" git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@100132 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/AppControllerExplorer.java | 112 ++++++++++-------- .../workspace/client/resources/Icons.java | 3 + .../workspace/client/resources/Resources.java | 7 ++ .../client/resources/icons/admin_keys.png | Bin 0 -> 1444 bytes .../client/view/tree/ContextMenuTree.java | 4 +- 5 files changed, 74 insertions(+), 52 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/admin_keys.png 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 0000000000000000000000000000000000000000..da357f327b9e76dcfa2a5063bc9cae1a810761f5 GIT binary patch literal 1444 zcmV;V1zY-wP)?ynAf=+K?G4d|3WG{6_26=(^f zjc>OY+qEb9l?UJVT@!}i7JT8cfxhInse_?V7@7s}%Fro;R|n~U>Y$ZCNe^EI*gduF zz2hlk-+E4Py&;Xz#z(yZU!T1LZdG+g1Ed z73J0uZW~Xy2;t&1syMYQmtR}0-7I>G>pA9nWBRJ}8}(N0z8#VKdy>NuPY9IqP`*Se z58-xbHmWqO9BWIn9DU}szg#bH9I$Sy;;&~;|E}3=#*{D3YPEXYX*$0-dgb8qvGc#k zJnX-+y}P#`LR|B|=E)V&{uE@o@?RUtqp|fXykt{L>#D{r=MF$BwNB z)B4+|KcQrBZ&sxya&G$mc>f23w%)?X9Rpk~YKkY1vHMp?Foovg!N)0l?r{>)09%B^ zV7FjR#>HnJdid+L`KN#OM#rz8`PMhPW6qC@{v97FdmGX_2N!~7dlk81ghafbR9}dR zktFS3PgAlCM!xfH(szxKj%s#q3zMsO3=PE1U~R;_D&3Lz4y=& zAOa8^F)rD4V~C9t_HZImBJ32=LKBQTthF>57liFH8Hv(SiW_+g*@2d=skN&puMb-U ziE7xsbML*&FFmmx>a&LM&C|&qk4^nIL(x!;fa@boa6&t9>=LC0l(HrAb{$6w+L;W6 zIuu-wm-Dk+UUO;sVXQVJQvFGSU84X-*z$gY+c_o7nD)IGD2Z?M5DG;YNtzTFW(imo z-t8;;%VpeL4yz^!=m^Qk$H+ILRNBz+p{2rMjNk?UBl4N&^1)rtKDh7b_pZH=-H${N z)*i9aH1Vzkcc!AWdrUI6g`LkLmgmV9TI6crIS@CY?L*ate92Wvp>Lb?^@YOBFYV8> zqCSe@D>kYd+_;s&BgE!CyQmy~gnz~RxH3A0rDGJF|D-gc0oq1@Y!#MYU9|9v#oH#` zF0JJ1>_4DJ$9nf{xJ;z0MYb8?oRwx%yiM2SR$iR^FxDpzBmE#P4_ZDr8p;mL{C1Vh z^N;=>kvR!8|Nj-<%3AIE%*D%#6KUQxI=pZ6LLllDIqTfbd}DxYQ*bN3g<7YFS_`T+ zU?QF8%;meq(v-4lgk|vi*TeKi_mb8t&*vPYk|#Vs^X~G() { public void componentSelected(MenuEvent ce) {