updateHistory removed from RestResource and other resources and implemented only...
[pithos] / src / gr / ebs / gss / client / PopupTree.java
index 7e37111..308f463 100644 (file)
@@ -23,9 +23,12 @@ import gr.ebs.gss.client.dnd.DnDTreeItem;
 import gr.ebs.gss.client.rest.resource.FolderResource;
 import gr.ebs.gss.client.rest.resource.OtherUserResource;
 import gr.ebs.gss.client.rest.resource.OthersResource;
+import gr.ebs.gss.client.rest.resource.RestResource;
 import gr.ebs.gss.client.rest.resource.SharedResource;
 import gr.ebs.gss.client.rest.resource.TrashResource;
 
+import java.util.Iterator;
+
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ContextMenuEvent;
 import com.google.gwt.event.dom.client.ContextMenuHandler;
@@ -34,10 +37,8 @@ import com.google.gwt.event.logical.shared.OpenEvent;
 import com.google.gwt.event.logical.shared.OpenHandler;
 import com.google.gwt.event.logical.shared.SelectionEvent;
 import com.google.gwt.event.logical.shared.SelectionHandler;
-import com.google.gwt.http.client.URL;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 
@@ -69,65 +70,13 @@ public class PopupTree extends Tree {
 
                        @Override
                        public void onSelection(SelectionEvent<TreeItem> event) {
-                               TreeItem item = event.getSelectedItem();
-                               processItemSelected(item, true);
-
+                               TreeItem treeItem = event.getSelectedItem();
+                               processItemSelected(treeItem);
                                String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
-
-//                             case: Trash is selected
-                               if(GSS.get().getFolders().isTrash(item)){
-                                       TrashResource currentObject = (TrashResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       String finalUri = currentObject.getUri().substring(path.lastIndexOf("/")+1);
-                                       History.newItem("Files/"+finalUri);
-                               }
-//                             case: Other's shared option is selected
-                               else if (GSS.get().getFolders().getCurrent().getUserObject() instanceof OthersResource){
-                                       String currentPartTrimmed = DisplayHelper.trim(item.getText());
-                                       String finalUri = URL.encodeComponent("Files/"+path.substring(path.lastIndexOf("/")+1) + currentPartTrimmed);
-
-                                       History.newItem(finalUri);
-                               }
-//                             case: expand Other's shared to folder below
-                               else if(GSS.get().getFolders().getCurrent().getUserObject() instanceof OtherUserResource){
-                                       OtherUserResource currentObject = (OtherUserResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       String finalUri = URL.encodeComponent("others/"+ currentObject.getName());
-                                       History.newItem(finalUri);
-                               }
-//                             case: my shared is selected
-                               else if(GSS.get().getFolders().getCurrent().getUserObject() instanceof SharedResource){
-                                       SharedResource currentObject = (SharedResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       String finalUri = currentObject.getUri().substring(path.lastIndexOf("/")+1);
-                                       History.newItem("Files/"+finalUri);
+                               String constructedUri = ((RestResource) GSS.get().getFolders().getCurrent().getUserObject()).constructUri(treeItem, path);
+                               GSS.get().updateHistory(constructedUri);
+//                             ((RestResource) GSS.get().getFolders().getCurrent().getUserObject()).updateHistory(treeItem,path);
                                }
-
-//                             case: home folders are selected
-                               else{
-                                       FolderResource currentObject = (FolderResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       String parentUri = currentObject.getParentURI();
-                                       if(parentUri == null){
-                                               if(containsTrash(GSS.get().getFolders().getCurrent())){
-                                                       String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
-                                                       History.newItem("trash/"+finalUri);
-                                               }else{
-                                                       String nonEncodedUri = "Files/" + currentObject.getName();
-
-                                                       History.newItem(URL.encode(nonEncodedUri));
-                                               }
-                                       } else if(containsSharedFolder(GSS.get().getFolders().getCurrent())){
-                                               String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
-                                               History.newItem("shared/"+finalUri);
-                                       }else if(containsSharedFolder(GSS.get().getFolders().getCurrent())){
-                                               String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
-                                               History.newItem("other's/"+finalUri);
-                                       }
-                                       else{
-                                               String uri = "Files"+ parentUri.substring(path.lastIndexOf("/")) + URL.encode(currentObject.getName());
-                                               History.newItem(uri);
-                                       }
-                               }
-                       }
-
-
                });
 
                addOpenHandler(new OpenHandler<TreeItem>() {
@@ -203,22 +152,17 @@ public class PopupTree extends Tree {
                menu.show();
        }
 
-       public void processItemSelected(TreeItem item, boolean fireEvents) {
-
-               if (GSS.get().getCurrentSelection() == null || !GSS.get().getCurrentSelection().equals(item.getUserObject()))
+       public void processItemSelected(TreeItem item) {
+               if (GSS.get().getCurrentSelection() == null || !GSS.get().getCurrentSelection().equals(item.getUserObject()))
                        GSS.get().setCurrentSelection(item.getUserObject());
                if (!GSS.get().isFileListShowing())
                        GSS.get().showFileList();
 
                // refresh Others Shared Node
-               if (GSS.get().getFolders().isOthersShared(item)) {
+               if (GSS.get().getFolders().isOthersShared(item)){
                        GSS.get().getFolders().update(item);
                        GSS.get().showFileList();
                }
-               // refresh Others Shared User Node
-//              else if(GSS.get().getFolders().isOthersSharedItem(item) &&
-//              item.getUserObject() instanceof UserDTO)
-//              GSS.get().getFolders().update(item);
 
                if (!item.equals(treeSelectedItem))
                        processSelection(item);
@@ -288,50 +232,48 @@ public class PopupTree extends Tree {
        public void setTreeSelectedItem(TreeItem newSelectedItem) {
                treeSelectedItem = newSelectedItem;
        }
-
        /**
-        * examine whether there is "My Shared" inside path
-        *
-        * @param selectedItem the selectedItem to check
+        * Method that takes a folderName and finds the corresponding treeItem object and returns it
+        * @param historyToken
+        * @return treeItem
         */
 
-       public boolean containsSharedFolder(TreeItem selectedItem){
-                  TreeItem parent = selectedItem.getParentItem();
-                  while (parent != null){
-                     String parentItemText = parent.getText();
-                     String parentItemTextTr = DisplayHelper.trim(parentItemText);
-                     if(parentItemTextTr.equals("My Shared")||parentItemTextTr.equals("Other's Shared")) return true;
-                     parent = parent.getParentItem();
-                  }
-                  return false;
-       }
-       public boolean containsTrash(TreeItem selectedItem){
-                  TreeItem parent = selectedItem.getParentItem();
-                  while (parent != null){
-                     String parentItemText = parent.getText();
-                     String parentItemTextTr = DisplayHelper.trim(parentItemText);
-                     if(parentItemTextTr.equals("Trash")) return true;
-                     parent = parent.getParentItem();
-                  }
-                  return false;
+       public TreeItem getTreeItem (String historyToken){
+               String historyTokenOriginal = historyToken.replace("+", " ");
+               String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
+               Iterator<TreeItem> it = GSS.get().getFolders().getPopupTree().treeItemIterator() ;
+               while(it.hasNext()){
+                       String constructedUri = "";
+                       TreeItem treeItem = it.next();
+                       if(treeItem.getUserObject() instanceof TrashResource){
+                               TrashResource currentObject = (TrashResource) treeItem.getUserObject();
+                               constructedUri = constructedUri +currentObject.constructUri(treeItem,path);
+                       }
+                       if(treeItem.getUserObject() instanceof SharedResource){
+                               SharedResource currentObject = (SharedResource) treeItem.getUserObject();
+                               constructedUri = constructedUri +currentObject.constructUri(treeItem, path);
+                       }
+                       if(treeItem.getUserObject() instanceof OthersResource){
+                               OthersResource currentObject = (OthersResource) treeItem.getUserObject();
+                               constructedUri = constructedUri +currentObject.constructUri(treeItem, path);
+                       }
+                       if(treeItem.getUserObject() instanceof OtherUserResource){
+                               OtherUserResource currentObject = (OtherUserResource) treeItem.getUserObject();
+                               constructedUri = constructedUri +currentObject.constructUri(treeItem, path);
+                       }
+                       if(treeItem.getUserObject() instanceof FolderResource){
+                               FolderResource currentObject = (FolderResource) treeItem.getUserObject();
+                               constructedUri = constructedUri + currentObject.constructUri(treeItem, path);
+                       }
+                       if(constructedUri.equals(historyTokenOriginal))
+                               return treeItem;
+                       }
+               return null;
        }
 
-       /**
-        * construct the partial path of the selected TreeItem
-        *
-        * @param selectedItem the selectedItem to check
-        */
-       public String constructPartialPath(TreeItem selectedItem){
-          String result = DisplayHelper.trim(selectedItem.getText());
-          TreeItem parent = selectedItem.getParentItem();
-          while (!(DisplayHelper.trim(parent.getText()).equals("My Shared") || DisplayHelper.trim(parent.getText()).equals("Other's Shared")||DisplayHelper.trim(parent.getText()).equals("Trash"))){
-             result = DisplayHelper.trim(parent.getText()) + "/" + result;
-             if(result.equals("My Shared")||result.equals("Other's Shared")) return result;
-             parent = parent.getParentItem();
-          }
-
-          return result;
+       public String getFolderName(String historyToken){
+               String[] names = historyToken.split("/");
+               return names[names.length -1];
        }
 
-
 }