X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/1f959b7e51106bf30bf8a83af71516ebce7855db..4ac4dbef869b50377d81d5ac680432c2bbd3b52c:/src/gr/ebs/gss/client/CellTreeView.java diff --git a/src/gr/ebs/gss/client/CellTreeView.java b/src/gr/ebs/gss/client/CellTreeView.java index d38b783..9ee137e 100644 --- a/src/gr/ebs/gss/client/CellTreeView.java +++ b/src/gr/ebs/gss/client/CellTreeView.java @@ -23,17 +23,28 @@ import gr.ebs.gss.client.rest.GetCommand; import gr.ebs.gss.client.rest.RestException; import gr.ebs.gss.client.rest.resource.FolderResource; import gr.ebs.gss.client.rest.resource.MyFolderResource; +import gr.ebs.gss.client.rest.resource.OtherUserResource; +import gr.ebs.gss.client.rest.resource.OthersFolderResource; import gr.ebs.gss.client.rest.resource.OthersResource; import gr.ebs.gss.client.rest.resource.RestResource; import gr.ebs.gss.client.rest.resource.RestResourceWrapper; import gr.ebs.gss.client.rest.resource.SharedResource; +import gr.ebs.gss.client.rest.resource.TrashFolderResource; import gr.ebs.gss.client.rest.resource.TrashResource; import gr.ebs.gss.client.rest.resource.UserResource; +import gwtquery.plugins.draggable.client.DragAndDropManager; +import gwtquery.plugins.droppable.client.events.DragAndDropContext; +import gwtquery.plugins.droppable.client.events.OverDroppableEvent; +import gwtquery.plugins.droppable.client.events.OverDroppableEvent.OverDroppableEventHandler; import gwtquery.plugins.droppable.client.gwt.DragAndDropCellTree; import java.util.Arrays; import com.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.AttachEvent; +import com.google.gwt.event.logical.shared.OpenEvent; +import com.google.gwt.event.logical.shared.OpenHandler; +import com.google.gwt.query.client.plugins.GQueryUi; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource.ImageOptions; @@ -43,6 +54,7 @@ import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSe import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.IncrementalCommand; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Tree; import com.google.gwt.view.client.ProvidesKey; @@ -76,6 +88,7 @@ public class CellTreeView extends Composite{ OthersResource others = null; CellTreeViewModel model; + CellTreeViewUtils utils; public interface Images extends ClientBundle,Tree.Resources, FolderContextMenu.Images { @@ -146,8 +159,32 @@ public class CellTreeView extends Composite{ super.onBrowserEvent(event); } }; + utils=new CellTreeViewUtils(tree); tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); - + /*tree.addOpenHandler(new OpenHandler() { + + @Override + public void onOpen(OpenEvent event) { + Window.alert("[NODE OPENED]"+event.getTarget()); + + } + }); + tree.addOverDroppableHandler(new OverDroppableEventHandler() { + + @Override + public void onOverDroppable(OverDroppableEvent event) { + GWT.log("OVER:"+event); + + } + }); + tree.addAttachHandler(new AttachEvent.Handler() { + + @Override + public void onAttachOrDetach(AttachEvent event) { + GWT.log("ATTACH:"+event.getSource()); + + } + });*/ Handler selectionHandler = new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(com.google.gwt.view.client.SelectionChangeEvent event) { @@ -157,8 +194,8 @@ public class CellTreeView extends Composite{ //((DefaultNodeInfo)nodeInfo).getValueUpdater().update(selectionModel.getSelectedObject()); //if(nodeInfo.getProvidesKey() instanceof FolderDataProvider) //((FolderDataProvider)nodeInfo.getProvidesKey()).onRangeChanged(null); - if(nodeInfo==null || nodeInfo.getValueUpdater()==null) - GWT.log("VALUE UPDATER IS NULL"); + if(nodeInfo==null || nodeInfo.getValueUpdater()==null){} + else nodeInfo.getValueUpdater().update(selectionModel.getSelectedObject()); GSS.get().setCurrentSelection(selectionModel.getSelectedObject()); @@ -185,30 +222,108 @@ public class CellTreeView extends Composite{ public void updateNode(RestResource resource){ NodeInfo nodeInfo = (NodeInfo) getModel().getNodeInfo(resource); - GWT.log("NODE INFO:"+nodeInfo); if(nodeInfo!=null){ - if(nodeInfo.getValueUpdater()==null) - GWT.log("VALUE UPDATER IS NULL"); + if(nodeInfo.getValueUpdater()==null){} else nodeInfo.getValueUpdater().update(resource); } } public void updateNodeChildren(final RestResource resource){ - if(resource instanceof RestResourceWrapper) + + if(resource instanceof RestResourceWrapper){ + boolean updated=false; if(((RestResourceWrapper)resource).getResource().getFolders().size()==0){ if(model.getMymap().get(((RestResourceWrapper)resource).getResource().getParentURI())!=null){ model.getMymap().get(((RestResourceWrapper)resource).getResource().getParentURI()).refresh(null); + updated=true; + } + if(model.getOthersmap().get(((RestResourceWrapper)resource).getResource().getParentURI())!=null){ + model.getOthersmap().get(((RestResourceWrapper)resource).getResource().getParentURI()).refresh(null); + updated=true; + } + if(model.getSharedmap().get(((RestResourceWrapper)resource).getResource().getParentURI())!=null){ + model.getSharedmap().get(((RestResourceWrapper)resource).getResource().getParentURI()).refresh(null); + updated=true; + } + if(updated){ + if(utils.doesSharedNodeContainsResourceIn1stLevel(resource.getUri())){ + updateMySharedNode(); + } return; } - } + } + + utils.refreshNodeContainingResource(resource); + if(utils.doesSharedNodeContainsResourceIn1stLevel(resource.getUri())){ + updateMySharedNode(); + } - refreshNodeContainingResource(resource); } - + public void updateNodeChildrenForRemove(final String resource){ + GWT.log("********************************"); + GWT.log("[UPDATENODECHILDREN]"+resource); + GWT.log("********************************"); + boolean updated=false; + TreeNode node=null; + if(tree.getRootTreeNode().isChildOpen(0)){ + node = utils.getNodeContainingResource2(tree.getRootTreeNode().setChildOpen(0,true), resource); + } + GWT.log("CHECK NODE1:"+node+" "+resource); + if(node==null) + if(tree.getRootTreeNode().isChildOpen(2)){ + GWT.log("CHECK NODE2:"+node); + node = utils.getNodeContainingResource2(tree.getRootTreeNode().setChildOpen(2,true), resource); + } + if(node==null) + if(tree.getRootTreeNode().isChildOpen(3)){ + GWT.log("CHECK NODE3:"+node); + node = utils.getNodeContainingResource2(tree.getRootTreeNode().setChildOpen(3,true), resource); + } + + if(node != null && node.getValue() instanceof RestResourceWrapper){ + GWT.log("*********************"+((RestResourceWrapper) node.getValue()).getResource().getFolders().size()); + if(((RestResourceWrapper) node.getValue()).getResource().getFolders().size()==1||((RestResourceWrapper) node.getValue()).getResource().getFolders().size()==0) + updateNodeChildren(((RestResourceWrapper) node.getValue()).getResource().getParentURI()); + else + updateNodeChildren(((RestResource) node.getValue()).getUri()); + return; + /*GWT.log("INSIDE:"+node); + RestResourceWrapper rw = (RestResourceWrapper) node.getValue(); + //if(rw.getResource().getFolders().size()==0){ + if(model.getMymap().get(rw.getResource().getUri())!=null){ + model.getMymap().get(rw.getResource().getUri()).refresh(null); + updated=true; + } + if(model.getOthersmap().get(rw.getResource().getUri())!=null){ + model.getOthersmap().get(rw.getResource().getUri()).refresh(null); + updated=true; + } + if(model.getSharedmap().get(rw.getResource().getUri())!=null){ + model.getSharedmap().get(rw.getResource().getUri()).refresh(null); + updated=true; + } + if(updated){ + if(doesSharedNodeContainsResourceIn1stLevel(resource)){ + updateMySharedNode(); + } + return; + } + } + //}*/ + + } + updateNodeChildren(resource); + } public void updateNodeChildren(final String resource){ - refreshNodeContainingResource(resource); + + + GWT.log("REFRESH THE OTHER WAY"); + utils.refreshNodeContainingResource(resource); + if(utils.doesSharedNodeContainsResourceIn1stLevel(resource)){ + updateMySharedNode(); + } } protected void showPopup(final int x, final int y) { @@ -300,7 +415,6 @@ public class CellTreeView extends Composite{ } if(myFolders==null||trash==null||myshared==null||others==null) return !DONE; - GWT.log("PAPALA"); model.getRootNodes().setList(Arrays.asList((RestResource)myFolders,(RestResource)trash,(RestResource)myshared,(RestResource)others)); tree.getRootTreeNode().setChildOpen(0, true); selectionModel.setSelected(myFolders, true); @@ -366,14 +480,54 @@ public class CellTreeView extends Composite{ DeferredCommand.addCommand(gf); } + public void updateMySharedNode(){ + GetCommand gs = new GetCommand(SharedResource.class, GSS.get().getCurrentUserResource().getSharedPath(), null) { + + @Override + public void onComplete() { + myshared=getResult(); + model.getRootNodes().getList().set(2, myshared); + } + + @Override + public void onError(Throwable t) { + GWT.log("Error fetching Shared Root folder", t); + GSS.get().displayError("Unable to fetch Shared Root folder"); + } + }; + DeferredCommand.addCommand(gs); + } - + public void updateOtherNode(){ + GetCommand go = new GetCommand(OthersResource.class, + GSS.get().getCurrentUserResource().getOthersPath(), null) { + + @Override + public void onComplete() { + others = getResult(); + model.getRootNodes().getList().set(3, others); + } + + @Override + public void onError(Throwable t) { + GWT.log("Error fetching Others Root folder", t); + GSS.get().displayError("Unable to fetch Others Root folder"); + } + }; + DeferredCommand.addCommand(go); + } public RestResource getSelection(){ return selectionModel.getSelectedObject(); } + public void clearSelection(){ + if(GSS.get().getCurrentSelection().equals(getSelection())) + GSS.get().setCurrentSelection(null); + selectionModel.setSelected(getSelection(), false); + } + /** * Retrieve the myFolders. @@ -424,75 +578,15 @@ public class CellTreeView extends Composite{ return model; } - private void refreshNodeContainingResource(RestResource r){ - TreeNode node = tree.getRootTreeNode(); - refreshNodeContainingResource(node,r); - } - - private void refreshNodeContainingResource(String uri){ - TreeNode node = tree.getRootTreeNode(); - refreshNodeContainingResource(node,uri); - } - private void refreshNodeContainingResource(TreeNode node, RestResource resource){ - int count = node.getChildCount(); - for(int i=0;i