X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/b34c766cba39863a1c4a3cf45b40524c1a6f9d8f..ea5100df09bce9ea7089dec8e80a818be11eb0a4:/src/gr/ebs/gss/client/PopupTree.java diff --git a/src/gr/ebs/gss/client/PopupTree.java b/src/gr/ebs/gss/client/PopupTree.java index 7baeed0..a2c92fd 100644 --- a/src/gr/ebs/gss/client/PopupTree.java +++ b/src/gr/ebs/gss/client/PopupTree.java @@ -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 . + * 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 . */ 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() { @Override public void onSelection(SelectionEvent 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 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; + } + }