From e55eb1300786e223f661b80b9a7d9a03808ad68f Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 15 Sep 2016 16:07:32 +0000 Subject: [PATCH] Added code to remove a Folder Link git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@131423 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/AppControllerExplorer.java | 5 +- .../workspace/client/ConstantsExplorer.java | 2 + .../client/constant/WorkspaceOperation.java | 3 +- .../client/event/GetFolderLinkEvent.java | 43 +++++++++++++----- .../workspace/client/resources/Icons.java | 5 +- .../workspace/client/resources/Resources.java | 9 ++++ .../resources/icons/folder_public_remove.png | Bin 0 -> 1004 bytes .../client/view/tree/ContextMenuTree.java | 25 +++++++++- .../client/view/windows/DialogGetLink.java | 31 +++++++++---- 9 files changed, 96 insertions(+), 27 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/folder_public_remove.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 c313664..6afd5c0 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 @@ -299,8 +299,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt // TODO Auto-generated method stub if(getFolderLinkEvent.getSourceFile()!=null){ GWT.log("getFolderLinkEvent.getSourceFile() "+getFolderLinkEvent.getSourceFile()); - DialogGetLink dialog = new DialogGetLink("Copy to clipboard Folder Link: Ctrl+C", getFolderLinkEvent.getSourceFile(), Link_Type.FOLDER_LINK); + DialogGetLink dialog = new DialogGetLink("Copy to clipboard Folder Link: Ctrl+C", getFolderLinkEvent.getSourceFile(), Link_Type.FOLDER_LINK, getFolderLinkEvent.isSetPublic()); dialog.show(); + } } }); @@ -686,7 +687,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt public void onGetPublicLink(GetPublicLinkEvent getPublicLinkEvent) { // TODO Auto-generated method stub if(getPublicLinkEvent.getSourceFile()!=null){ - DialogGetLink dialog = new DialogGetLink("Copy to clipboard Public Link: Ctrl+C", getPublicLinkEvent.getSourceFile(), Link_Type.PUBLIC_LINK); + DialogGetLink dialog = new DialogGetLink("Copy to clipboard Public Link: Ctrl+C", getPublicLinkEvent.getSourceFile(), Link_Type.PUBLIC_LINK, false); dialog.show(); } } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/ConstantsExplorer.java b/src/main/java/org/gcube/portlets/user/workspace/client/ConstantsExplorer.java index efad2d3..5adb8df 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/ConstantsExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/ConstantsExplorer.java @@ -70,6 +70,7 @@ public class ConstantsExplorer { public static final String MESSAGE_GET_INFO = "Get Info"; public static final String MESSAGE_PUBLIC_LINK = "Get Public Link"; public static final String MESSAGE_FOLDER_LINK = "Get Folder Link"; + public static final String MESSAGE_FOLDER_LINK_REMOVE = "Remove Folder Link"; public static final String LISTATTACHMENTSNAMES = "Attachments Names"; public static final String LISTCONTACTSTOSTRING = "ListContactToString"; public static final String STATUS = "Status"; @@ -216,6 +217,7 @@ public class ConstantsExplorer { + public static native void log(String txt) /*-{ console.log(txt) }-*/; diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/constant/WorkspaceOperation.java b/src/main/java/org/gcube/portlets/user/workspace/client/constant/WorkspaceOperation.java index f19e274..280f924 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/constant/WorkspaceOperation.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/constant/WorkspaceOperation.java @@ -38,7 +38,8 @@ public enum WorkspaceOperation { // ADD_ADMINISTRATOR("AAD", "AAD"), // ADD_ADMINISTRATOR VRE_CHANGE_PERIMISSIONS("CHP", "CHP"), EDIT_PERMISSIONS("EDP", "EDP"), //EDIT PERMISSIONS - FOLDER_LINK("FRL", "FRL"); //FOLDER LINK + FOLDER_LINK("FRL", "FRL"), //FOLDER LINK + FOLDER_LINK_REMOVE("FPR","FPR"); //FOLDER LINK REMOVE private String id; // ID CONTEXT MENU diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/event/GetFolderLinkEvent.java b/src/main/java/org/gcube/portlets/user/workspace/client/event/GetFolderLinkEvent.java index 01f9d39..bf3fce8 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/event/GetFolderLinkEvent.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/event/GetFolderLinkEvent.java @@ -1,45 +1,63 @@ + package org.gcube.portlets.user.workspace.client.event; import org.gcube.portlets.user.workspace.client.model.FileModel; import com.google.gwt.event.shared.GwtEvent; - /** * The Class GetFolderLinkEvent. * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Sep 13, 2016 + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Sep 13, 2016 */ public class GetFolderLinkEvent extends GwtEvent { - public static Type TYPE = new Type(); - private FileModel targetFile = null; + public static Type TYPE = + new Type(); + private FileModel targetFile = null; + private boolean setPublic; /** * Instantiates a new gets the folder link event. * - * @param target the target + * @param target + * the target */ - public GetFolderLinkEvent(FileModel target) { + public GetFolderLinkEvent(FileModel target, boolean setPublic) { + this.targetFile = target; + this.setPublic = setPublic; } - /* (non-Javadoc) + + /** + * @return the setPublic + */ + public boolean isSetPublic() { + + return setPublic; + } + + /* + * (non-Javadoc) * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() */ @Override public Type getAssociatedType() { + return TYPE; } - /* (non-Javadoc) - * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + /* + * (non-Javadoc) + * @see + * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared + * .EventHandler) */ @Override protected void dispatch(GetFolderLinkEventHandler handler) { - handler.onGetFolderLink(this); + handler.onGetFolderLink(this); } /** @@ -48,6 +66,7 @@ public class GetFolderLinkEvent extends GwtEvent { * @return the source file */ public FileModel getSourceFile() { + return targetFile; } -} \ No newline at end of file +} 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 d64fc3d..0297793 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 @@ -439,8 +439,11 @@ public interface Icons extends ClientBundle { @Source("icons/folder_public.png") ImageResource folderPublic(); - + @Source("icons/folder_shared_public.png") ImageResource folderSharedPublic(); + + @Source("icons/folder_public_remove.png") + ImageResource folderPublicRemove(); } 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 e2467dd..cc36611 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 @@ -1324,6 +1324,15 @@ public class Resources { return AbstractImagePrototype.create(ICONS.permissions()); } + /** + * Gets the icon folder public remove. + * + * @return the icon folder public remove + */ + public static AbstractImagePrototype getIconFolderPublicRemove() { + return AbstractImagePrototype.create(ICONS.folderPublicRemove()); + } + /** * Gets the icon add administrator. diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/folder_public_remove.png b/src/main/java/org/gcube/portlets/user/workspace/client/resources/icons/folder_public_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6e8c3a7b2ba79b96e134ec3d6d32d28ee4d6cf GIT binary patch literal 1004 zcmVDW19?eA zK~y-)g^+Db)O7&IKmY$daCaOJ$Fs-DlY$X4J)8}MY#}PkMJ;NraIBR&Y-_DGWxb&C zMfR?8#FEn)8^BoRX$Hhxc4@b}NAAGKp(=v;S&gPU9A9DA*zSBEjdCuiLcsSj-zKm2? z{n1rN=w$KB*6DxzPT;MZbK&5G-efc;%WHo00Ure^2Fade z&vso5W$)=Y#`@fq%4FwjBqrJDd*dt87t+xzM$EOD)E{j$ZNJoZQnu#(G&s5HW8}sS zBI6H`ytC}~O>wWj4fK2Q_f2rK@B~?RXIL~VRDOS)Cy(w2KnQ_8E(GPrUq@+9XXt~= zm(yN+=kXDdlVGv+S(xZf8 z#G@K<0VbVD_gPZDR{WkeI10 zW7TY6-~1fbt{=%QsKSs@$A;ku3qCJuTtkk=HHgOu&Mz@gdycKkK~$Z@N<%pvZ(pb9 z^rr+Y1}b{Ha1Y&LUG*X?VJ4Ty@dl%MSycrh5~jDI14kf&-Y7AXm&#_#2_#D*S(Q7u z+D|mll6kgd zkol}KCg;37kO7u6wu>Gcg;pP?NK`q^r(gm$Rn9nY}$1zi&}o9UmC{qyOGaVEWIc zD^vTo4Bx3|&g;jq^A}`?hg;pbB(267m1Pd+{&fK$>6@o32R&`?s$b+}bOH9qd!n(K zeXT;OX%#KqHu3QYBDwmIFzz@Y$gXGxk|q9+@}>e*<*m}aQ?)6!07Kn*zbYZEgV{b0 aApH$%Xpe=!qiMtd0000() { + public void componentSelected(MenuEvent ce) { + + for (FileModel sel : listSelectedItems) { + if(sel.isDirectory()) + eventBus.fireEvent(new GetFolderLinkEvent(sel, false)); + } + } + }); + + contextMenu.add(mnFolderLinkRemove); + contextMenu.add(new SeparatorMenuItem()); MenuItem mnHistory = new MenuItem(); @@ -808,6 +827,7 @@ public class ContextMenuTree { contextMenu.getItemByItemId(WorkspaceOperation.REFRESH_FOLDER.getId()).setVisible(false); //refresh contextMenu.getItemByItemId(WorkspaceOperation.PUBLIC_LINK.getId()).setVisible(false); //public link contextMenu.getItemByItemId(WorkspaceOperation.FOLDER_LINK.getId()).setVisible(false); //folder link + contextMenu.getItemByItemId(WorkspaceOperation.FOLDER_LINK_REMOVE.getId()).setVisible(false); //folder link remove // contextMenu.getItemByItemId(WorkspaceOperation.ADD_ADMINISTRATOR.getId()).setVisible(false); //public link contextMenu.getItemByItemId(WorkspaceOperation.EDIT_PERMISSIONS.getId()).setVisible(false); contextMenu.getItemByItemId(WorkspaceOperation.SHARE.getId()).setVisible(false); //SHARE @@ -882,6 +902,9 @@ public class ContextMenuTree { contextMenu.getItemByItemId(WorkspaceOperation.UNSHARE.getId()).setVisible(false); //UNSHARE } + if(selectedItem.isPublic()) + contextMenu.getItemByItemId(WorkspaceOperation.FOLDER_LINK_REMOVE.getId()).setVisible(true); //folder link + GWT.log("HideSharing = " + hideSharing); //not supported in tree Reports if (hideSharing) { diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java index 54e1d1a..81b5c7d 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java @@ -16,6 +16,7 @@ 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.Label; +import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.VerticalPanel; import com.extjs.gxt.ui.client.widget.form.TextField; import com.google.gwt.core.client.GWT; @@ -37,6 +38,7 @@ public class DialogGetLink extends Dialog { private int height = 210; private VerticalPanel vp = new VerticalPanel(); private FileModel item; + private boolean setAsPublic = false; /** * The Enum Link_Type. @@ -52,9 +54,11 @@ public class DialogGetLink extends Dialog { * @param headingTxt the heading txt * @param item the item * @param type the type + * @param setAsPublic the set as public */ - public DialogGetLink(String headingTxt, final FileModel item, Link_Type type) { + public DialogGetLink(String headingTxt, final FileModel item, Link_Type type, boolean setAsPublic) { this.item = item; + this.setAsPublic = setAsPublic; setButtonAlign(HorizontalAlignment.CENTER); vp.setHorizontalAlign(HorizontalAlignment.CENTER); vp.setVerticalAlign(VerticalAlignment.MIDDLE); @@ -128,7 +132,7 @@ public class DialogGetLink extends Dialog { case FOLDER_LINK: - vp.mask("Getting Folder Link... checking permissions"); + vp.mask("Updating Folder Link... checking permissions"); if(item.isShared()){ setIcon(Resources.getIconFolderSharedPublic()); }else @@ -153,8 +157,10 @@ public class DialogGetLink extends Dialog { public void onSuccess(InfoContactModel result) { vp.unmask(); if(result.getLogin().compareToIgnoreCase(AppControllerExplorer.myLogin)==0){ - vp.mask("Getting Folder Link... permissions granted"); - allowAccessToFolderLink(item.getIdentifier()); + String msg = DialogGetLink.this.setAsPublic?"Getting":"Removing"; + msg=msg+" Folder Link... permissions granted"; + vp.mask(msg); + allowAccessToFolderLink(item.getIdentifier(), DialogGetLink.this.setAsPublic); }else new MessageBoxAlert("Permission Denied", "You have not permission to get Folder Link, you must be owner or administrator to the folder", null); @@ -186,19 +192,26 @@ public class DialogGetLink extends Dialog { add(vp); } - - /** * Allow access to folder link. * * @param folderId the folder id + * @param setIsPublic the set is public */ - private void allowAccessToFolderLink(String folderId){ + protected void allowAccessToFolderLink(String folderId, final boolean setIsPublic){ - AppControllerExplorer.rpcWorkspaceService.markFolderAsPublicForFolderItemId(folderId, true, new AsyncCallback() { + AppControllerExplorer.rpcWorkspaceService.markFolderAsPublicForFolderItemId(folderId, setIsPublic, new AsyncCallback() { @Override public void onSuccess(PublicLink publicLink) { + + if(!setIsPublic && publicLink==null){ + DialogGetLink.this.hide(); + MessageBox.info("Folder Link Removed", "Folder Link to the folder: "+item.getName()+ " removed correctly", null); + AppControllerExplorer.getEventBus().fireEvent(new RefreshFolderEvent(item.getParentFileModel(), true, false, false)); + return; + } + vp.unmask(); txtCompleteURL.setValue(publicLink.getCompleteURL()); txtShortURL.setValue(publicLink.getShortURL()); @@ -217,8 +230,6 @@ public class DialogGetLink extends Dialog { new MessageBoxAlert("Error", caught.getMessage(), null); } }); - - } /**