Double-click on a file downloads it
[pithos] / web_client / src / gr / grnet / pithos / web / client / FileList.java
index 72abc2d..2566f24 100644 (file)
@@ -55,11 +55,14 @@ import com.google.gwt.event.dom.client.ContextMenuHandler;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
+import com.google.gwt.safehtml.client.SafeHtmlTemplates.Template;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.cellview.client.CellTable;
 import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.view.client.ListDataProvider;
@@ -81,7 +84,7 @@ public class FileList extends Composite {
 
        interface TableResources extends CellTable.Resources {
            @Override
-               @Source({CellTable.Style.DEFAULT_CSS, "GssCellTable.css"})
+               @Source({CellTable.Style.DEFAULT_CSS, "PithosCellTable.css"})
            TableStyle cellTableStyle();
        }
        
@@ -267,7 +270,7 @@ public class FileList extends Composite {
                 sb.append(Templates.INSTANCE.filenameSpan(object.getName()));
                                if (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg")) {
                                sb.appendHtmlConstant(" ")
-                      .append(Templates.INSTANCE.viewLink(object.getUri(), object.getOwner() + " : " + object.getPath() + object.getName()));
+                      .append(Templates.INSTANCE.viewLink(app.getApiPath() + object.getOwner() + object.getUri() + "?X-Auth-Token=" + app.getToken(), object.getName()));
                                }
                                
                                return sb.toSafeHtml();
@@ -295,7 +298,7 @@ public class FileList extends Composite {
         aColumn = new Column<File,String>(new TextCell()) {
                        @Override
                        public String getValue(File object) {
-                               return formatter.format(object.getLastModified());
+                               return object.getLastModified() != null ? formatter.format(object.getLastModified()) : "";
                        }
                };
         aheader = new SortableHeader("Last Modified");
@@ -307,6 +310,7 @@ public class FileList extends Composite {
 
                VerticalPanel vp = new VerticalPanel();
                vp.setWidth("100%");
+               vp.addStyleName("pithos-FileListContainer");
 
         vp.add(celltable);
 
@@ -329,7 +333,7 @@ public class FileList extends Composite {
 
                selectionModel = new MultiSelectionModel<File>(keyProvider);
 
-               celltable.setSelectionModel(selectionModel, GSSSelectionEventManager.<File> createDefaultManager());
+               celltable.setSelectionModel(selectionModel, PithosSelectionEventManager.<File> createDefaultManager());
 //             celltable.setPageSize(Pithos.VISIBLE_FILE_COUNT);
                
                sinkEvents(Event.ONCONTEXTMENU);
@@ -337,7 +341,7 @@ public class FileList extends Composite {
 //             sinkEvents(Event.ONMOUSEDOWN);
 //             sinkEvents(Event.ONCLICK);
 //             sinkEvents(Event.ONKEYDOWN);
-//             sinkEvents(Event.ONDBLCLICK);
+               sinkEvents(Event.ONDBLCLICK);
                Pithos.preventIESelection();
        }
 
@@ -345,9 +349,9 @@ public class FileList extends Composite {
         return new ArrayList<File>(selectionModel.getSelectedSet());
        }
        
-//     @Override
-//     public void onBrowserEvent(Event event) {
-//
+       @Override
+       public void onBrowserEvent(Event event) {
+
 //             if (files == null || files.size() == 0) {
 //                     if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && getSelectedFiles().size() == 0) {
 //                             contextMenu = new FileContextMenu(images, false, true);
@@ -368,16 +372,16 @@ public class FileList extends Composite {
 //                     contextMenu = contextMenu.onEmptyEvent(event);
 //                     event.cancelBubble(true);
 //                     event.preventDefault();
-//             } else if (DOM.eventGetType(event) == Event.ONDBLCLICK)
-//                     if (getSelectedFiles().size() == 1) {
-//                             Pithos app = app;
-//                             File file = getSelectedFiles().get(0);
-//                             Window.open(file.getUri(), "_blank", "");
-//                             event.preventDefault();
-//                             return;
-//                     }
-//             super.onBrowserEvent(event);
-//     }
+//             } else 
+               if (DOM.eventGetType(event) == Event.ONDBLCLICK)
+                       if (getSelectedFiles().size() == 1) {
+                               File file = getSelectedFiles().get(0);
+                               Window.open(app.getApiPath() + file.getOwner() + file.getUri() + "?X-Auth-Token=" + app.getToken(), "_blank", "");
+                               event.preventDefault();
+                               return;
+                       }
+               super.onBrowserEvent(event);
+       }
 
        /**
         * Update the display of the file list.
@@ -454,6 +458,7 @@ public class FileList extends Composite {
         provider.setList(files);
         selectionModel.clear();
         app.showFolderStatistics(folderFileCount);
+        celltable.setPageSize(folderFileCount);
        }
 
        /**
@@ -497,7 +502,9 @@ public class FileList extends Composite {
                             } else if (sortingProperty.equals("owner")) {
                                     return arg0.getOwner().compareTo(arg1.getOwner());
                             } else if (sortingProperty.equals("date")) {
-                                    return arg0.getLastModified().compareTo(arg1.getLastModified());
+                                       if (arg0.getLastModified() != null && arg1.getLastModified() != null)
+                                               return arg0.getLastModified().compareTo(arg1.getLastModified());
+                                       return 0;
                             } else if (sortingProperty.equals("size")) {
                                     return (int) (arg0.getBytes() - arg1.getBytes());
                             } else if (sortingProperty.equals("name")) {