Use Lytebox (a Lightbox clone) for quick viewing images.
[pithos] / src / gr / ebs / gss / client / FileMenu.java
index 636f411..63fc1f1 100644 (file)
@@ -25,6 +25,7 @@ import gr.ebs.gss.client.commands.RefreshCommand;
 import gr.ebs.gss.client.commands.UploadFileCommand;\r
 import gr.ebs.gss.client.rest.RestCommand;\r
 import gr.ebs.gss.client.rest.resource.FileResource;\r
+import gr.ebs.gss.client.rest.resource.FolderResource;\r
 import gr.ebs.gss.client.rest.resource.GroupUserResource;\r
 \r
 import com.google.gwt.http.client.URL;\r
@@ -117,18 +118,37 @@ public class FileMenu extends PopupPanel implements ClickListener {
         * @param link a String array with two elements that is modified so that the\r
         *            first position contains the opening tag and the second one the\r
         *            closing tag\r
+        * @param forceDownload If true, link will be such that browser should ask for filename\r
+        *                              and save location\r
         */\r
-       void createDownloadLink(String[] link) {\r
+       void createDownloadLink(String[] link, boolean forceDownload) {\r
+               String downloadURL = getDownloadURL();\r
+               if (!downloadURL.isEmpty()) {\r
+                       link[0] = "<a class='hidden-link' href='" + downloadURL\r
+                                       + (forceDownload ? "&dl=1" : "") + "' target='_blank'>";\r
+                       link[1] = "</a>";\r
+               }\r
+       }\r
+\r
+       public String getDownloadURL() {\r
                GSS app = GSS.get();\r
                Object selection = app.getCurrentSelection();\r
                if (selection != null && selection instanceof FileResource) {\r
                        FileResource file = (FileResource) selection;\r
+                       return getDownloadURL(file);\r
+               }\r
+               return "";\r
+       }\r
+\r
+       public String getDownloadURL(FileResource file) {\r
+               GSS app = GSS.get();\r
+               if (file != null) {\r
                        String dateString = RestCommand.getDate();\r
                        String resource = file.getUri().substring(app.getApiPath().length()-1,file.getUri().length());\r
                        String sig = app.getCurrentUserResource().getUsername()+" "+RestCommand.calculateSig("GET", dateString, resource, RestCommand.base64decode(app.getToken()));\r
-                       link[0] = "<a class='hidden-link' href='" + file.getUri() + "?Authorization=" + URL.encodeComponent(sig) + "&Date="+URL.encodeComponent(dateString) + "' target='_blank'>";\r
-                       link[1] = "</a>";\r
+                       return file.getUri() + "?Authorization=" + URL.encodeComponent(sig) + "&Date="+URL.encodeComponent(dateString);\r
                }\r
+               return "";\r
        }\r
 \r
        public MenuBar createMenu() {\r
@@ -144,13 +164,16 @@ public class FileMenu extends PopupPanel implements ClickListener {
                Folders folders = GSS.get().getFolders();\r
                TreeItem selectedItem = folders.getCurrent();\r
                boolean downloadVisible = GSS.get().getCurrentSelection() != null && GSS.get().getCurrentSelection() instanceof FileResource;\r
+               boolean uploadVisible = GSS.get().getFolders().getCurrent().getUserObject() instanceof FolderResource;\r
                boolean propertiesNotVisible = selectedItem != null && (folders.isTrash(selectedItem) || folders.isMyShares(selectedItem) || folders.isOthersShared(selectedItem) || selectedItem.getUserObject() instanceof GroupUserResource);\r
                contextMenu.addItem("<span>" + images.folderNew().getHTML() + "&nbsp;New Folder</span>", true, new NewFolderCommand(this, images));\r
                contextMenu.addItem("<span>" + images.fileUpdate().getHTML() + "&nbsp;Upload</span>", true, new UploadFileCommand(this));\r
                if (downloadVisible) {\r
                        String[] link = {"", ""};\r
-                       createDownloadLink(link);\r
+                       createDownloadLink(link, false);\r
                        contextMenu.addItem("<span>" + link[0] + images.download().getHTML() + "&nbsp;Download" + link[1] + "</span>", true, downloadCmd);\r
+                       createDownloadLink(link, true);\r
+                       contextMenu.addItem("<span>" + link[0] + images.download().getHTML() + "&nbsp;Save As" + link[1] + "</span>", true, downloadCmd);\r
                }\r
                contextMenu.addItem("<span>" + images.emptyTrash().getHTML() + "&nbsp;Empty Trash</span>", true, new EmptyTrashCommand(this));\r
                contextMenu.addItem("<span>" + images.refresh().getHTML() + "&nbsp;Refresh</span>", true, new RefreshCommand(this, images));\r