Change image view URL according to new semantics for "view" URLs
[pithos-web-client] / src / gr / grnet / pithos / web / client / FileList.java
index 903b08f..2a9068d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ * Copyright 2011-2013 GRNET S.A. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
 
 package gr.grnet.pithos.web.client;
 
-import gr.grnet.pithos.web.client.foldertree.File;
-import gr.grnet.pithos.web.client.foldertree.Folder;
-import gr.grnet.pithos.web.client.foldertree.FolderTreeView;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.ImageResourceCell;
 import com.google.gwt.cell.client.SafeHtmlCell;
@@ -53,10 +43,8 @@ import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ContextMenuEvent;
 import com.google.gwt.event.dom.client.ContextMenuHandler;
-import com.google.gwt.http.client.URL;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.resources.client.ClientBundle.Source;
 import com.google.gwt.resources.client.ImageResource.ImageOptions;
 import com.google.gwt.resources.client.ImageResource.RepeatStyle;
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
@@ -74,6 +62,11 @@ import com.google.gwt.view.client.ListDataProvider;
 import com.google.gwt.view.client.MultiSelectionModel;
 import com.google.gwt.view.client.ProvidesKey;
 import com.google.gwt.view.client.SelectionChangeEvent;
+import gr.grnet.pithos.web.client.foldertree.File;
+import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.foldertree.FolderTreeView;
+
+import java.util.*;
 
 /**
  * A composite that displays the list of files in a particular folder.
@@ -286,19 +279,10 @@ public class FileList extends Composite {
                        @Override
                        public SafeHtml getValue(File object) {
                                SafeHtmlBuilder sb = new SafeHtmlBuilder();
-                               if (!app.getSelectedTree().equals(app.mysharedTreeView)) {
-                                       sb.append(Templates.INSTANCE.filenameSpan(object.getName()));
-                               }
-                               else {
-                                       String name = object.getPath();
-                                       if (name.lastIndexOf("/") != -1) {
-                                               name = name.substring(name.lastIndexOf("/") + 1, name.length());
-                                       }
-                                       sb.append(Templates.INSTANCE.filenameSpan(name));
-                               }
+                               sb.append(Templates.INSTANCE.filenameSpan(object.getName()));
                                if (object.getContentType() != null && (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg"))) {
                                sb.appendHtmlConstant(" ")
-                      .append(Templates.INSTANCE.viewLink(app.getApiPath() + object.getOwner() + object.getUri(), object.getName()));
+                      .append(Templates.INSTANCE.viewLink(Pithos.getFileViewURL(object), object.getName()));
                                }
                                
                                return sb.toSafeHtml();
@@ -409,13 +393,8 @@ public class FileList extends Composite {
                });
                
                celltable.setSelectionModel(selectionModel, PithosSelectionEventManager.<File> createDefaultManager());
-//             celltable.setPageSize(Pithos.VISIBLE_FILE_COUNT);
                
                sinkEvents(Event.ONCONTEXTMENU);
-//             sinkEvents(Event.ONMOUSEUP);
-//             sinkEvents(Event.ONMOUSEDOWN);
-//             sinkEvents(Event.ONCLICK);
-//             sinkEvents(Event.ONKEYDOWN);
                sinkEvents(Event.ONDBLCLICK);
                Pithos.preventIESelection();
        }
@@ -427,31 +406,10 @@ public class FileList extends Composite {
        @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);
-//                contextMenu.show();
-//                             event.preventDefault();
-//                             event.cancelBubble(true);
-//                     }
-//                     return;
-//             }
-//             if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && getSelectedFiles().size() != 0) {
-//                     GWT.log("*****GOING TO SHOW CONTEXT MENU ****", null);
-//                     contextMenu =  new FileContextMenu(images, false, false);
-//                     contextMenu = contextMenu.onEvent(event);
-//                     event.cancelBubble(true);
-//                     event.preventDefault();
-//             } else if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && getSelectedFiles().size() == 0) {
-//                     contextMenu = new FileContextMenu(images, false, true);
-//                     contextMenu = contextMenu.onEmptyEvent(event);
-//                     event.cancelBubble(true);
-//                     event.preventDefault();
-//             } else 
                if (DOM.eventGetType(event) == Event.ONDBLCLICK)
                        if (getSelectedFiles().size() == 1) {
                                File file = getSelectedFiles().get(0);
-                               Window.open(app.getApiPath() + file.getOwner() + file.getUri(), "_blank", "");
+                               Window.open(Pithos.getFileViewURL(file), "_blank", "");
                                event.preventDefault();
                                return;
                        }
@@ -581,7 +539,7 @@ public class FileList extends Composite {
                             if (sortingProperty.equals("version")) {
                                     return arg0.getVersion() - arg1.getVersion();
                             } else if (sortingProperty.equals("owner")) {
-                                    return arg0.getOwner().compareTo(arg1.getOwner());
+                                    return arg0.getOwnerID().compareTo(arg1.getOwnerID());
                             } else if (sortingProperty.equals("date")) {
                                        if (arg0.getLastModified() != null && arg1.getLastModified() != null)
                                                return arg0.getLastModified().compareTo(arg1.getLastModified());
@@ -601,7 +559,7 @@ public class FileList extends Composite {
                             return arg1.getVersion() - arg0.getVersion();
                     } else if (sortingProperty.equals("owner")) {
                             
-                            return arg1.getOwner().compareTo(arg0.getOwner());
+                            return arg1.getOwnerID().compareTo(arg0.getOwnerID());
                     } else if (sortingProperty.equals("date")) {
                             
                             return arg1.getLastModified().compareTo(arg0.getLastModified());
@@ -674,4 +632,23 @@ public class FileList extends Composite {
                else if (callback != null)
                        callback.execute();
        }
+
+       public void selectByUrl(List<String> selectedUrls) {
+               Set<File> previous = selectionModel.getSelectedSet();
+               for (File f : previous)
+                       selectionModel.setSelected(f, false);
+               
+               int i = 0;
+               boolean scrolled = false;
+               for (File f : files) {
+                       if (selectedUrls.contains(Pithos.getStorageAPIURL() + f.getOwnerID() + f.getUri())) {
+                               selectionModel.setSelected(f, true);
+                               if (!scrolled) {
+                                       celltable.getRowElement(i).getCells().getItem(0).scrollIntoView();
+                                       scrolled = true;
+                               }
+                       }
+                       i++;
+               }
+       }
 }