improved version of bug (almost)fix 371. Abstract methods implemented inside RestReso...
[pithos] / src / gr / ebs / gss / client / PopupTree.java
index 2f86ad1..a9bf125 100644 (file)
@@ -21,10 +21,8 @@ package gr.ebs.gss.client;
 import gr.ebs.gss.client.Folders.Images;
 import gr.ebs.gss.client.dnd.DnDTreeItem;
 import gr.ebs.gss.client.rest.resource.FolderResource;
-import gr.ebs.gss.client.rest.resource.GroupUserResource;
 import gr.ebs.gss.client.rest.resource.OtherUserResource;
-import gr.ebs.gss.client.rest.resource.OthersResource;
-import gr.ebs.gss.client.rest.resource.TrashResource;
+import gr.ebs.gss.client.rest.resource.RestResource;
 
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ContextMenuEvent;
@@ -36,7 +34,6 @@ import com.google.gwt.event.logical.shared.SelectionEvent;
 import com.google.gwt.event.logical.shared.SelectionHandler;
 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;
 
@@ -70,24 +67,9 @@ public class PopupTree extends Tree {
                        public void onSelection(SelectionEvent<TreeItem> event) {
                                TreeItem item = event.getSelectedItem();
                                processItemSelected(item, true);
-
-                               String path = GSS.get().getApiPath() +  GSS.get().getCurrentUserResource().getUsername()+ "/";
-
-                               if(GSS.get().getFolders().isTrash(item)){
-                                       TrashResource currentObject = (TrashResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       History.newItem(currentObject.getUri().substring(path.lastIndexOf("/")) + GSS.get().getFolders().getCurrent().getText());
-                               }else if (GSS.get().getFolders().isMyShares(item)){
-                                       GroupUserResource currentObject = (GroupUserResource)GSS.get().getFolders().getCurrent().getUserObject();
-                                       History.newItem(currentObject.getUri().substring(path.lastIndexOf("/")) + GSS.get().getFolders().getCurrent().getText());
-                               }else if (GSS.get().getFolders().isOthersShared(item)){
-                                       OthersResource currentObject = (OthersResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       History.newItem(currentObject.getUri().substring(path.lastIndexOf("/")) + GSS.get().getFolders().getCurrent().getText());
-                               }else{
-                                       FolderResource currentObject = (FolderResource) GSS.get().getFolders().getCurrent().getUserObject();
-                                       History.newItem("Files" + currentObject.getParentURI().substring(path.lastIndexOf("/")) + GSS.get().getFolders().getCurrent().getText());
+                               String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
+                               ((RestResource) GSS.get().getFolders().getCurrent().getUserObject()).updateHistoryAbs(item,path);
                                }
-
-                       }
                });
 
                addOpenHandler(new OpenHandler<TreeItem>() {
@@ -164,21 +146,16 @@ public class PopupTree extends Tree {
        }
 
        public void processItemSelected(TreeItem item, boolean fireEvents) {
-
-               if (GSS.get().getCurrentSelection() == null || !GSS.get().getCurrentSelection().equals(item.getUserObject()))
+               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);
@@ -249,4 +226,36 @@ public class PopupTree extends Tree {
                treeSelectedItem = newSelectedItem;
        }
 
+       /**
+        * 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;
+       }
+       /**
+        * examine whether a folder name like "Trash", "My Shared", "Other's Shared" is inside path
+        *
+        * @param selectedItem the selectedTreeItem to check
+        */
+
+       public boolean containsFolder(TreeItem selectedItem, String folderName){
+               TreeItem parent = selectedItem.getParentItem();
+               while (parent != null){
+                       String parentItemText = parent.getText();
+                       String parentItemTextTr = DisplayHelper.trim(parentItemText);
+                       if(parentItemTextTr.equals(folderName)) return true;
+                       parent = parent.getParentItem();
+                       }
+               return false;
+       }
 }