Increased frequency of commits during solr index rebuild to every 10 files
[pithos] / src / gr / ebs / gss / client / PopupTree.java
index 7baeed0..a2c92fd 100644 (file)
@@ -1,13 +1,20 @@
 /*
- * Copyright 2008, 2009 Electronic Business Systems Ltd. This file is part of
- * GSS. GSS is free software: you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version. GSS is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details. You should have received a copy of the GNU General Public License
- * along with GSS. If not, see <http://www.gnu.org/licenses/>.
+ * Copyright 2008, 2009, 2010 Electronic Business Systems Ltd.
+ *
+ * This file is part of GSS.
+ *
+ * GSS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GSS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
  */
 package gr.ebs.gss.client;
 
@@ -15,6 +22,12 @@ 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.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;
@@ -26,7 +39,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;
 
@@ -52,19 +64,17 @@ public class PopupTree extends Tree {
                images = theImages;
                sinkEvents(Event.ONCONTEXTMENU);
                sinkEvents(Event.ONMOUSEUP);
-               // sinkEvents(Event.ONMOUSEDOWN);
+//             sinkEvents(Event.ONMOUSEDOWN);
 
                addSelectionHandler(new SelectionHandler<TreeItem>() {
 
                        @Override
                        public void onSelection(SelectionEvent<TreeItem> event) {
-                               TreeItem item = event.getSelectedItem();
-                               processItemSelected(item, true);
-                               String path = GSS.get().getApiPath() +  GSS.get().getCurrentUserResource().getUsername()+ "/";
-                               FolderResource currentObject = (FolderResource) GSS.get().getFolders().getCurrent().getUserObject();
-//                             String currentURI = currentObject.getParentURI();
-                               History.newItem("Files" + currentObject.getParentURI().substring(path.lastIndexOf("/")) + GSS.get().getFolders().getCurrent().getText());
-//                             History.newItem(currentObject.getParentURI() + GSS.get().getFolders().getCurrent().getText());
+                               TreeItem treeItem = event.getSelectedItem();
+                               processItemSelected(treeItem);
+                               String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
+                               String constructedUri = ((RestResource) GSS.get().getFolders().getCurrent().getUserObject()).constructUri(treeItem, path);
+                               GSS.get().updateHistory(constructedUri);
                        }
                });
 
@@ -141,22 +151,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);
@@ -226,5 +231,63 @@ public class PopupTree extends Tree {
        public void setTreeSelectedItem(TreeItem newSelectedItem) {
                treeSelectedItem = newSelectedItem;
        }
+       /**
+        * Method that takes a folderName and finds the corresponding treeItem object and returns it
+        * @param historyToken
+        * @return treeItem
+        */
+
+       public TreeItem getTreeItem (String historyToken){
+//             String historyTokenOriginal = historyToken.replace("+", " ");
+               String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
+               String rootText = DisplayHelper.trim(GSS.get().getFolders().getRootItem().getText());
+               String uriToGet = "Files/files/" + rootText;
+               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(historyToken))
+                               return treeItem;
+               }
+               return expandHiddenItems(uriToGet);
+
+       }
+
+
+       public TreeItem expandHiddenItems(String tokenInput){
+               //TODO
+               // this method handles objects that are not constructed during loading the application
+               // and when there's a need to seek them inside some non-expanded folder
+               // This method is not implemented yet and in case of a non-constructed object
+               // returns the home/root folder
+               // treeItem.getState() method returns always false so the OpenEvent.fire() method
+               // fails to expand the parent folder in the UI
+
+               GSS.get().getFolders().getRootItem().getText();
+               TreeItem treeItem = getTreeItem(tokenInput);
+               OpenEvent.fire(GSS.get().getFolders().getPopupTree(), treeItem);
+               return treeItem;
+       }
+
 
 }