Fixed refresh button to update stats
[pithos-web-client] / src / gr / grnet / pithos / web / client / Pithos.java
index 214135e..f3b3681 100644 (file)
@@ -58,6 +58,7 @@ import gr.grnet.pithos.web.client.tagtree.TagTreeView;
 import gr.grnet.pithos.web.client.tagtree.TagTreeViewModel;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -84,6 +85,7 @@ import com.google.gwt.json.client.JSONParser;
 import com.google.gwt.json.client.JSONString;
 import com.google.gwt.json.client.JSONValue;
 import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.resources.client.ImageResource.ImageOptions;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.Cookies;
 import com.google.gwt.user.client.Event;
@@ -97,6 +99,7 @@ import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.HasVerticalAlignment;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.HorizontalSplitPanel;
+import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.view.client.SelectionChangeEvent;
@@ -170,6 +173,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                ImageResource folders();
 
                @Source("gr/grnet/pithos/resources/advancedsettings.png")
+               @ImageOptions(width=32, height=32)
                ImageResource tools();
        }
 
@@ -241,7 +245,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
     GroupTreeViewModel groupTreeViewModel;
     private GroupTreeView groupTreeView;
 
-    private TreeView selectedTree;
+    TreeView selectedTree;
     protected AccountResource account;
     
     Folder trash;
@@ -252,8 +256,6 @@ public class Pithos implements EntryPoint, ResizeHandler {
     
     Button upload;
     
-    private HTML totalFiles;
-    
     private HTML usedBytes;
     
     private HTML totalBytes;
@@ -262,7 +264,9 @@ public class Pithos implements EntryPoint, ResizeHandler {
     
     private HTML numOfFiles;
     
-    private Button toolsButton;
+    private Image refreshButton;
+
+    private Image toolsButton;
 
        @Override
        public void onModuleLoad() {
@@ -287,18 +291,11 @@ public class Pithos implements EntryPoint, ResizeHandler {
                outer.setCellHorizontalAlignment(topPanel, HasHorizontalAlignment.ALIGN_CENTER);
         }
         
-        messagePanel.setWidth(contentWidth);
-        messagePanel.setVisible(false);
-        outer.add(messagePanel);
-        outer.setCellHorizontalAlignment(messagePanel, HasHorizontalAlignment.ALIGN_CENTER);
-
         HorizontalPanel header = new HorizontalPanel();
         header.addStyleName("pithos-header");
         header.setWidth(contentWidth);
         if (bareContent)
                header.addStyleName("pithos-header-noframe");
-        HorizontalPanel leftHeader = new HorizontalPanel();
-        VerticalPanel uploadButtonPanel = new VerticalPanel();
         upload = new Button("Upload File", new ClickHandler() {
             @Override
             public void onClick(@SuppressWarnings("unused") ClickEvent event) {
@@ -306,20 +303,45 @@ public class Pithos implements EntryPoint, ResizeHandler {
             }
         });
         upload.addStyleName("pithos-uploadButton");
-        uploadButtonPanel.add(upload);
-        uploadButtonPanel.setWidth("100%");
-        uploadButtonPanel.setHeight("60px");
-        uploadButtonPanel.setCellHorizontalAlignment(upload, HasHorizontalAlignment.ALIGN_LEFT);
-        uploadButtonPanel.setCellVerticalAlignment(upload, HasVerticalAlignment.ALIGN_MIDDLE);
-        leftHeader.add(uploadButtonPanel);
-        header.add(leftHeader);
-        header.setCellWidth(leftHeader, "35%");
+        header.add(upload);
+        header.setCellHorizontalAlignment(upload, HasHorizontalAlignment.ALIGN_LEFT);
+        header.setCellVerticalAlignment(upload, HasVerticalAlignment.ALIGN_MIDDLE);
+//        header.setCellWidth(upload, "146px");
+
+        messagePanel.setVisible(false);
+        header.add(messagePanel);
+        header.setCellHorizontalAlignment(messagePanel, HasHorizontalAlignment.ALIGN_CENTER);
+        header.setCellVerticalAlignment(messagePanel, HasVerticalAlignment.ALIGN_MIDDLE);
         
-        HorizontalPanel rightHeader = new HorizontalPanel();
-        rightHeader.addStyleName("pithos-rightSide");
-        rightHeader.setSpacing(5);
+        refreshButton = new Image(images.refresh());
+        refreshButton.addStyleName("pithos-toolsButton");
+        refreshButton.setWidth("32px");
+        refreshButton.setHeight("32px");
+        refreshButton.addClickHandler(new ClickHandler() {
+                       
+                       @Override
+                       public void onClick(@SuppressWarnings("unused") ClickEvent event) {
+                       boolean isFolderTreeSelected = selectedTree.equals(getFolderTreeView());
+                       boolean otherSharedTreeSelected = selectedTree.equals(getOtherSharedTreeView());
+                       Folder folder = getSelectedTree().getSelection();
+                       
+                       if (folder != null && (isFolderTreeSelected || otherSharedTreeSelected))
+                               updateFolder(folder, true, new Command() {
+                                       
+                                       @Override
+                                       public void execute() {
+                                               updateStatistics();
+                                       }
+                               });
+                       }
+               });
+        header.add(refreshButton);
+        header.setCellHorizontalAlignment(refreshButton, HasHorizontalAlignment.ALIGN_CENTER);
+        header.setCellVerticalAlignment(refreshButton, HasVerticalAlignment.ALIGN_MIDDLE);
+        header.setCellWidth(refreshButton, "40px");
 
-        toolsButton = new Button(AbstractImagePrototype.create(images.tools()).getHTML());
+        toolsButton = new Image(images.tools());
+        toolsButton.addStyleName("pithos-toolsButton");
         toolsButton.addClickHandler(new ClickHandler() {
                        
                        @Override
@@ -331,9 +353,11 @@ public class Pithos implements EntryPoint, ResizeHandler {
                 }
                        }
                });
-        rightHeader.add(toolsButton);
-        rightHeader.setCellHorizontalAlignment(toolsButton, HasHorizontalAlignment.ALIGN_LEFT);
-        
+        header.add(toolsButton);
+        header.setCellHorizontalAlignment(toolsButton, HasHorizontalAlignment.ALIGN_CENTER);
+        header.setCellVerticalAlignment(toolsButton, HasVerticalAlignment.ALIGN_MIDDLE);
+        header.setCellWidth(toolsButton, "40px");
+       
         HorizontalPanel folderStatistics = new HorizontalPanel();
         folderStatistics.addStyleName("pithos-folderStatistics");
         numOfFiles = new HTML();
@@ -342,11 +366,10 @@ public class Pithos implements EntryPoint, ResizeHandler {
         HTML numOfFilesLabel = new HTML(" Files");
         folderStatistics.add(numOfFilesLabel);
         folderStatistics.setCellVerticalAlignment(numOfFilesLabel, HasVerticalAlignment.ALIGN_MIDDLE);
-        rightHeader.add(folderStatistics);
-        rightHeader.setCellHorizontalAlignment(folderStatistics, HasHorizontalAlignment.ALIGN_RIGHT);
-        header.add(rightHeader);
-        header.setCellVerticalAlignment(rightHeader, HasVerticalAlignment.ALIGN_MIDDLE);
-        header.setCellHeight(rightHeader, "60px");
+        header.add(folderStatistics);
+        header.setCellHorizontalAlignment(folderStatistics, HasHorizontalAlignment.ALIGN_RIGHT);
+        header.setCellVerticalAlignment(folderStatistics, HasVerticalAlignment.ALIGN_MIDDLE);
+        header.setCellWidth(folderStatistics, "40px");
         outer.add(header);
         outer.setCellHorizontalAlignment(header, HasHorizontalAlignment.ALIGN_CENTER);
         // Inner contains the various lists.nner
@@ -388,10 +411,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
         treeHeader.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
         HorizontalPanel statistics = new HorizontalPanel();
         statistics.addStyleName("pithos-statistics");
-        statistics.add(new HTML("Total Objects: "));
-        totalFiles = new HTML();
-        statistics.add(totalFiles);
-        statistics.add(new HTML(" | Used: "));
+        statistics.add(new HTML("Used: "));
         usedBytes = new HTML();
         statistics.add(usedBytes);
         statistics.add(new HTML(" of "));
@@ -476,6 +496,15 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                });
             }
         });
+        
+//        Scheduler.get().scheduleDeferred(new Command() {
+//                     
+//                     @Override
+//                     public void execute() {
+//                             displayError("lalala");
+//                             
+//                     }
+//             });
     }
 
     public void applyPermissions(Folder f) {
@@ -566,6 +595,10 @@ public class Pithos implements EntryPoint, ResizeHandler {
                 authenticateUser();
                 return false;
             }
+            if (auth.startsWith("\""))
+               auth = auth.substring(1);
+            if (auth.endsWith("\""))
+               auth = auth.substring(0, auth.length() - 1);
                        String[] authSplit = auth.split("\\" + conf.cookieSeparator(), 2);
                        if (authSplit.length != 2) {
                            authenticateUser();
@@ -575,7 +608,8 @@ public class Pithos implements EntryPoint, ResizeHandler {
                        token = authSplit[1];
                        return true;
         }
-               Cookies.setCookie(conf.authCookie(), username + conf.cookieSeparator() + token);
+        
+               Cookies.setCookie(conf.authCookie(), username + conf.cookieSeparator() + token, null, "", "/", false);
                return true;
     }
 
@@ -643,7 +677,6 @@ public class Pithos implements EntryPoint, ResizeHandler {
        }
 
        protected void showStatistics() {
-       totalFiles.setHTML(String.valueOf(account.getNumberOfObjects()));
        usedBytes.setHTML(String.valueOf(account.getFileSizeAsString()));
        totalBytes.setHTML(String.valueOf(account.getQuotaAsString()));
        NumberFormat nf = NumberFormat.getPercentFormat();
@@ -983,9 +1016,10 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                }
             };
             copyFile.setHeader("X-Auth-Token", getToken());
-            copyFile.setHeader("X-Copy-From", file.getUri());
+            copyFile.setHeader("X-Copy-From", URL.encodePathSegment(file.getUri()));
             if (!file.getOwner().equals(targetUsername))
-               copyFile.setHeader("X-Source-Account", file.getOwner());
+               copyFile.setHeader("X-Source-Account", URL.encodePathSegment(file.getOwner()));
+            copyFile.setHeader("Content-Type", file.getContentType());
             Scheduler.get().scheduleDeferred(copyFile);
         }
         else  if (callback != null) {
@@ -1174,7 +1208,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
        public void logoff() {
         Configuration conf = (Configuration) GWT.create(Configuration.class);
-               Cookies.removeCookie(conf.authCookie());
+               Cookies.removeCookie(conf.authCookie(), "/");
                Cookies.removeCookie(conf.authTokenCookie(), "/");
                for (String s: Cookies.getCookieNames())
                        if (s.startsWith(conf.shibSessionCookiePrefix()))