Removed context menu from my hared tree
authorChristos Stathis <chstath@ebs.gr>
Wed, 14 Sep 2011 16:46:49 +0000 (19:46 +0300)
committerChristos Stathis <chstath@ebs.gr>
Wed, 14 Sep 2011 16:46:49 +0000 (19:46 +0300)
src/gr/grnet/pithos/web/client/FileList.java
src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/TreeView.java [new file with mode: 0644]
src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java
src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeView.java
src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java
src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java

index 12ef1fd..fb28e0f 100644 (file)
@@ -314,12 +314,15 @@ public class FileList extends Composite {
         vp.addHandler(new ContextMenuHandler() {
             @Override
             public void onContextMenu(ContextMenuEvent event) {
-                Folder selectedFolder = treeView.getSelection();
-                FileContextMenu contextMenu = new FileContextMenu(app, images, selectedFolder, getSelectedFiles(), false);
-                int x = event.getNativeEvent().getClientX();
-                int y = event.getNativeEvent().getClientY();
-                contextMenu.setPopupPosition(x, y);
-                contextMenu.show();
+               TreeView tree = app.getSelectedTree();
+               if (tree != null && (tree.equals(app.getFolderTreeView()) || tree.equals(app.getOtherSharedTreeView()))) {
+                       Folder selectedFolder = app.getSelection();
+                       FileContextMenu contextMenu = new FileContextMenu(app, images, selectedFolder, getSelectedFiles(), false);
+                       int x = event.getNativeEvent().getClientX();
+                       int y = event.getNativeEvent().getClientY();
+                       contextMenu.setPopupPosition(x, y);
+                       contextMenu.show();
+               }
             }
         }, ContextMenuEvent.getType());
                initWidget(vp);
index a1e0015..e6789cf 100644 (file)
@@ -49,6 +49,7 @@ import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;\r
 import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.event.dom.client.KeyCodes;\r
+import com.google.gwt.http.client.Response;\r
 import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.user.client.Event.NativePreviewEvent;\r
 import com.google.gwt.user.client.ui.Button;\r
@@ -340,7 +341,7 @@ public class FolderPropertiesDialog extends DialogBox {
             updateMetadata(folder.getUri() + "?update=", perms);\r
        }\r
 \r
-       protected void updateMetadata(String path, Map<String, Boolean[]> newPermissions) {\r
+       protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {\r
         if (newPermissions != null) {\r
             PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwner(), path) {\r
                 @Override\r
@@ -351,7 +352,34 @@ public class FolderPropertiesDialog extends DialogBox {
                 @Override\r
                 public void onError(Throwable t) {\r
                     GWT.log("", t);\r
-                    app.displayError("System error modifying folder: " + t.getMessage());\r
+                    if (t instanceof RestException) {\r
+                       if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) { //Probably a virtual folder\r
+                            final String path1 = folder.getUri();\r
+                            PutRequest newFolder = new PutRequest(app.getApiPath(), app.getUsername(), path1) {\r
+                                @Override\r
+                                public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
+                                       updateMetadata(path, newPermissions);\r
+                                }\r
+\r
+                                @Override\r
+                                public void onError(Throwable t) {\r
+                                    GWT.log("", t);\r
+                                    if(t instanceof RestException){\r
+                                        app.displayError("Unable to update folder: " + ((RestException) t).getHttpStatusText());\r
+                                    }\r
+                                    else\r
+                                        app.displayError("System error modifying folder: " + t.getMessage());\r
+                                }\r
+                            };\r
+                            newFolder.setHeader("X-Auth-Token", app.getToken());\r
+                            newFolder.setHeader("Content-Type", "application/folder");\r
+                            newFolder.setHeader("Accept", "*/*");\r
+                            newFolder.setHeader("Content-Length", "0");\r
+                            Scheduler.get().scheduleDeferred(newFolder);\r
+                       }\r
+                    }\r
+                    else\r
+                       app.displayError("System error modifying folder: " + t.getMessage());\r
                 }\r
             };\r
             updateFolder.setHeader("X-Auth-Token", app.getToken());\r
index 3af5bfc..779f34b 100644 (file)
@@ -240,17 +240,17 @@ public class Pithos implements EntryPoint, ResizeHandler {
      */
     private String token;
 
-    protected SingleSelectionModel<Folder> folderTreeSelectionModel;
-    protected FolderTreeViewModel folderTreeViewModel;
-    protected FolderTreeView folderTreeView;
+    SingleSelectionModel<Folder> folderTreeSelectionModel;
+    FolderTreeViewModel folderTreeViewModel;
+    FolderTreeView folderTreeView;
 
-    protected SingleSelectionModel<Folder> mysharedTreeSelectionModel;
+    SingleSelectionModel<Folder> mysharedTreeSelectionModel;
     private MysharedTreeViewModel mysharedTreeViewModel;
-    private MysharedTreeView mysharedTreeView;
+    MysharedTreeView mysharedTreeView;
 
     protected SingleSelectionModel<Folder> otherSharedTreeSelectionModel;
     private OtherSharedTreeViewModel otherSharedTreeViewModel;
-    private OtherSharedTreeView otherSharedTreeView;
+    OtherSharedTreeView otherSharedTreeView;
 
     protected SingleSelectionModel<Tag> tagTreeSelectionModel;
     private TagTreeViewModel tagTreeViewModel;
@@ -259,6 +259,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
     private GroupTreeViewModel groupTreeViewModel;
     private GroupTreeView groupTreeView;
 
+    private TreeView selectedTree;
     protected AccountResource account;
     
     private Folder trash;
@@ -316,7 +317,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
             @Override
             public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                 if (folderTreeSelectionModel.getSelectedObject() != null) {
-                    deselectOthers(folderTreeSelectionModel);
+                    deselectOthers(folderTreeView, folderTreeSelectionModel);
                     Folder f = folderTreeSelectionModel.getSelectedObject();
                     updateFolder(f, true, null);
                 }
@@ -335,7 +336,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
             @Override
             public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                 if (mysharedTreeSelectionModel.getSelectedObject() != null) {
-                    deselectOthers(mysharedTreeSelectionModel);
+                    deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
                     updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
                 }
             }
@@ -349,7 +350,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
             @Override
             public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                 if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
-                    deselectOthers(otherSharedTreeSelectionModel);
+                    deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
                     updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
                 }
             }
@@ -358,21 +359,6 @@ public class Pithos implements EntryPoint, ResizeHandler {
         otherSharedTreeViewModel = new OtherSharedTreeViewModel(this, otherSharedTreeSelectionModel);
         otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
 
-        tagTreeSelectionModel = new SingleSelectionModel<Tag>();
-        tagTreeSelectionModel.addSelectionChangeHandler(new Handler() {
-            @Override
-            public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
-                if (tagTreeSelectionModel.getSelectedObject() != null) {
-                    deselectOthers(tagTreeSelectionModel);
-                    Tag t = tagTreeSelectionModel.getSelectedObject();
-                    updateTag(t);
-                }
-            }
-        });
-        selectionModels.add(tagTreeSelectionModel);
-        tagTreeViewModel = new TagTreeViewModel(this, tagTreeSelectionModel);
-        tagTreeView = new TagTreeView(tagTreeViewModel);
-
         groupTreeViewModel = new GroupTreeViewModel(this);
         groupTreeView = new GroupTreeView(groupTreeViewModel);
 
@@ -437,7 +423,8 @@ public class Pithos implements EntryPoint, ResizeHandler {
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
-       public void deselectOthers(SingleSelectionModel model) {
+       public void deselectOthers(TreeView _selectedTree, SingleSelectionModel model) {
+       selectedTree = _selectedTree;
         for (SingleSelectionModel s : selectionModels)
             if (!s.equals(model))
                 s.setSelected(s.getSelectedObject(), false);
@@ -939,4 +926,12 @@ public class Pithos implements EntryPoint, ResizeHandler {
                account.removeGroup(group);
                updateGroupsNode();
        }
+
+       public TreeView getSelectedTree() {
+               return selectedTree;
+       }
+       
+       public Folder getSelection() {
+               return selectedTree.getSelection();
+       }
 }
diff --git a/src/gr/grnet/pithos/web/client/TreeView.java b/src/gr/grnet/pithos/web/client/TreeView.java
new file mode 100644 (file)
index 0000000..0d4bad5
--- /dev/null
@@ -0,0 +1,7 @@
+package gr.grnet.pithos.web.client;
+
+import gr.grnet.pithos.web.client.foldertree.Folder;
+
+public interface TreeView {
+       public Folder getSelection();
+}
index 733779c..9893285 100644 (file)
@@ -47,8 +47,9 @@ import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Tree;
 import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
 
-public class FolderTreeView extends Composite {
+public class FolderTreeView extends Composite implements TreeView {
 
     public void updateChildren(Folder folder) {
         TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
index 5537cc7..78d864e 100644 (file)
@@ -36,6 +36,7 @@
 package gr.grnet.pithos.web.client.mysharedtree;
 
 import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
 import gr.grnet.pithos.web.client.foldertree.Folder;
 
 import com.google.gwt.core.client.GWT;
@@ -49,7 +50,7 @@ import com.google.gwt.user.cellview.client.TreeNode;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Tree;
 
-public class MysharedTreeView extends Composite {
+public class MysharedTreeView extends Composite implements TreeView {
 
     public void updateChildren(Folder folder) {
         TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
index ee736fb..679e462 100644 (file)
@@ -72,7 +72,7 @@ public class MysharedTreeViewModel implements TreeViewModel {
 
     protected Pithos app;
 
-    private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
+    private Cell<Folder> folderCell = new AbstractCell<Folder>() {
 
        @Override
         public void render(@SuppressWarnings("unused") Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
@@ -116,7 +116,7 @@ public class MysharedTreeViewModel implements TreeViewModel {
                 @Override
                 public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                     if (selectionModel2.getSelectedObject() != null) {
-                       app.deselectOthers(selectionModel2);
+                       app.deselectOthers(app.getMySharedTreeView(), selectionModel2);
                        fetchSharedFiles();
                     }
                 }
index 531510e..4da4b28 100644 (file)
@@ -36,6 +36,7 @@
 package gr.grnet.pithos.web.client.othersharedtree;
 
 import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
 import gr.grnet.pithos.web.client.foldertree.Folder;
 
 import com.google.gwt.core.client.GWT;
@@ -49,7 +50,7 @@ import com.google.gwt.user.cellview.client.TreeNode;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Tree;
 
-public class OtherSharedTreeView extends Composite {
+public class OtherSharedTreeView extends Composite implements TreeView {
 
     public void updateChildren(Folder folder) {
         TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
index 89eb4c1..2403696 100644 (file)
@@ -118,7 +118,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel {
                 @Override
                 public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                     if (selectionModel2.getSelectedObject() != null) {
-                       app.deselectOthers(selectionModel2);
+                       app.deselectOthers(app.getOtherSharedTreeView(), selectionModel2);
                        app.showFiles(new HashSet<File>());
                     }
                 }
@@ -149,7 +149,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel {
                        @Override
                        public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
                            if (selectionModel3.getSelectedObject() != null) {
-                               app.deselectOthers(selectionModel3);
+                               app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
                                String username = selectionModel3.getSelectedObject();
                                fetchSharedFiles(username, userDataProviderMap.get(username));
                            }