Initialization code for tag views
[pithos-web-client] / src / gr / grnet / pithos / web / client / foldertree / FolderTreeViewModel.java
index faffec7..d779151 100644 (file)
@@ -47,7 +47,7 @@ import com.google.gwt.view.client.ListDataProvider;
 import com.google.gwt.view.client.SingleSelectionModel;
 import com.google.gwt.view.client.TreeViewModel;
 import gr.grnet.pithos.web.client.FolderContextMenu;
-import gr.grnet.pithos.web.client.GSS;
+import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.foldertree.FolderTreeView.Templates;
 import gr.grnet.pithos.web.client.rest.GetRequest;
 import gr.grnet.pithos.web.client.rest.RestException;
@@ -62,7 +62,11 @@ public class FolderTreeViewModel implements TreeViewModel {
 
        @Override
         public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
-            String html = AbstractImagePrototype.create(FolderTreeView.images.folderYellow()).getHTML();
+            String html;
+            if (folder.isTrash())
+                html = AbstractImagePrototype.create(FolderTreeView.images.emptyTrash()).getHTML();
+            else
+                html = AbstractImagePrototype.create(FolderTreeView.images.folderYellow()).getHTML();
             safeHtmlBuilder.appendHtmlConstant(html);
             safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
         }
@@ -71,9 +75,11 @@ public class FolderTreeViewModel implements TreeViewModel {
         public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, Folder folder, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<Folder> valueUpdater) {
             if (event.getType().equals(ContextMenuEvent.getType().getName())) {
                 FolderTreeViewModel.this.selectionModel.setSelected(folder, true);
-                FolderContextMenu menu = new FolderContextMenu(FolderTreeView.images, folder);
-                menu.setPopupPosition(event.getClientX(), event.getClientY());
-                menu.show();
+                if (!folder.isTrash()) {
+                    FolderContextMenu menu = new FolderContextMenu(FolderTreeView.images, folder);
+                    menu.setPopupPosition(event.getClientX(), event.getClientY());
+                    menu.show();
+                }
             }
         }
     };
@@ -116,10 +122,10 @@ public class FolderTreeViewModel implements TreeViewModel {
     }
 
     private void fetchFolder(final Iterator<Folder> iter, final ListDataProvider<Folder> dataProvider, final Set<Folder> folders) {
+        final Pithos app = Pithos.get();
         if (iter.hasNext()) {
             final Folder f = iter.next();
 
-            GSS app = GSS.get();
             String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
             GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, path, f) {
                 @Override
@@ -131,9 +137,9 @@ public class FolderTreeViewModel implements TreeViewModel {
                 public void onError(Throwable t) {
                     GWT.log("Error getting folder", t);
                     if (t instanceof RestException)
-                        GSS.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
+                        Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
                     else
-                        GSS.get().displayError("System error fetching folder: " + t.getMessage());
+                        Pithos.get().displayError("System error fetching folder: " + t.getMessage());
                 }
             };
             getFolder.setHeader("X-Auth-Token", app.getToken());
@@ -142,8 +148,14 @@ public class FolderTreeViewModel implements TreeViewModel {
         else {
             dataProvider.getList().clear();
             dataProvider.getList().addAll(folders);
-            if (dataProvider.equals(rootDataProvider))
+            if (dataProvider.equals(rootDataProvider)) {
                 selectionModel.setSelected(dataProvider.getList().get(0), true);
+                Folder f = new Folder("Trash");
+                f.setTrash(true);
+                f.setContainer("trash");
+                dataProvider.getList().add(f);
+                Pithos.get().updateTags();
+            }
         }
     }
 
@@ -161,7 +173,10 @@ public class FolderTreeViewModel implements TreeViewModel {
             dataProviderMap.put(folder, new ListDataProvider<Folder>());
         }
         final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
-        fetchFolder(folder, dataProvider);
+        if (!folder.isTrash())
+            fetchFolder(folder, dataProvider);
+        else
+            Pithos.get().showFiles(folder);
     }
 
     public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider) {
@@ -169,11 +184,12 @@ public class FolderTreeViewModel implements TreeViewModel {
         Scheduler.get().scheduleDeferred(new ScheduledCommand() {
             @Override
             public void execute() {
-                final GSS app = GSS.get();
+                final Pithos app = Pithos.get();
                 String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
                 GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, path, f) {
                     @Override
                     public void onSuccess(Folder result) {
+                        app.showFiles(result);
                         Iterator<Folder> iter = result.getSubfolders().iterator();
                         fetchFolder(iter, dataProvider, result.getSubfolders());
                     }
@@ -182,9 +198,9 @@ public class FolderTreeViewModel implements TreeViewModel {
                     public void onError(Throwable t) {
                         GWT.log("Error getting folder", t);
                         if (t instanceof RestException)
-                            GSS.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
+                            Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
                         else
-                            GSS.get().displayError("System error fetching folder: " + t.getMessage());
+                            Pithos.get().displayError("System error fetching folder: " + t.getMessage());
                     }
                 };
                 getFolder.setHeader("X-Auth-Token", app.getToken());