folder refresh after new folder command, rename etc
authorkoutsoub <devnull@localhost>
Fri, 28 Jan 2011 13:33:22 +0000 (15:33 +0200)
committerkoutsoub <devnull@localhost>
Fri, 28 Jan 2011 13:33:22 +0000 (15:33 +0200)
src/gr/ebs/gss/client/CellTreeView.java
src/gr/ebs/gss/client/DeleteFolderDialog.java
src/gr/ebs/gss/client/FileContextMenu.java
src/gr/ebs/gss/client/FileUploadGearsDialog.java
src/gr/ebs/gss/client/FolderPropertiesDialog.java
src/gr/ebs/gss/client/commands/RefreshCommand.java
src/gr/ebs/gss/client/commands/ToTrashCommand.java
src/gr/ebs/gss/public/gss.css

index bfe0e64..2682919 100644 (file)
@@ -48,6 +48,7 @@ import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.resources.client.ImageResource.ImageOptions;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.cellview.client.CellTree;
+import com.google.gwt.user.cellview.client.TreeNode;
 import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.Event;
@@ -82,7 +83,7 @@ public class CellTreeView extends Composite{
                }});
        FolderContextMenu menu;
        Map<String,FolderDataProvider> mymap=new HashMap<String, FolderDataProvider>();
-       
+       Map<String,NodeInfo<RestResource>> nodeInfos = new HashMap<String, NodeInfo<RestResource>>();
        FolderResource myFolders=null;
        TrashResource trash = null;
        SharedResource myshared = null;
@@ -161,6 +162,7 @@ public class CellTreeView extends Composite{
                }
            };
            tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
+           
            Handler selectionHandler = new SelectionChangeEvent.Handler() { 
             @Override 
             public void onSelectionChange(com.google.gwt.view.client.SelectionChangeEvent event) {
@@ -207,46 +209,16 @@ public class CellTreeView extends Composite{
        }
        
        public void updateNodeChildren(final RestResource resource){
-               /*NodeInfo<RestResource> nodeInfo = (NodeInfo<RestResource>) getModel().getNodeInfo(resource);
-               GWT.log("NODE INFO:"+nodeInfo);
-               if(nodeInfo!=null){
-               if(nodeInfo.getProvidesKey()==null)
-                       GWT.log("VALUE UPDATER IS NULL");
-               else if (nodeInfo.getProvidesKey() instanceof FolderDataProvider){
-                       GWT.log("VALUE UPDATER IS OK");
-                       ((FolderDataProvider)nodeInfo.getProvidesKey()).refresh();
-               }
-       }*/
-               if(resource.equals(myFolders)){
-                       GWT.log("myfolders");
-                       updateNode(resource);
-                       return;
-               }
-               if(resource instanceof FolderResource){
-                       FolderDataProvider dp = mymap.get(((FolderResource)resource).getParentURI());
-                       GWT.log("DP:"+dp);
-                       if(dp!=null){
-                               dp.refresh(null);/*new RefreshHandler(){
-
-                                       @Override
-                                       public void onRefresh() {
-                                               FolderDataProvider dp2 = mymap.get(resource.getUri());
-                                               GWT.log("DP2:"+dp2);
-                                               if(dp2!=null){
-                                                       dp2.refresh(null);
-                                               }
-                                               
-                                       }
-                                       
-                               });
-                       return;*/       
+               if(resource instanceof FolderResource)
+                       if(((FolderResource)resource).getFolders().size()==0){
+                               mymap.get(((FolderResource)resource).getParentURI()).refresh(null);
+                               return;
                        }
-               }
-               FolderDataProvider dp2 = mymap.get(resource.getUri());
-               GWT.log("DP2:"+dp2);
-               if(dp2!=null){
-                       dp2.refresh(null);
-               }
+               refreshNodeContainingResource(resource);
+       }
+       
+       public void updateNodeChildren(final String resource){
+               refreshNodeContainingResource(resource);
        }
        
        protected void showPopup(final int x, final int y) {
@@ -385,7 +357,6 @@ public class CellTreeView extends Composite{
                        }
                        
                        public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, RestResource value, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<RestResource> valueUpdater) {
-                               GWT.log("-->"+event.getType());
                                if(event.getType().equals("contextmenu")){
                                        selectionModel.setSelected(value, true);
                                        showPopup(event.getClientX(), event.getClientY());
@@ -408,6 +379,7 @@ public class CellTreeView extends Composite{
                            ((FolderResource) value));
                        DragAndDropNodeInfo<RestResource> n =  new DragAndDropNodeInfo<RestResource>(dataProvider, departmentCell,
                            selectionModel, new ResourceValueUpdater());
+                       nodeInfos.put(((FolderResource) value).getUri(), n);
                        DroppableOptions options = n.getDroppableOptions();
                        options.setDroppableHoverClass("droppableHover");
                        // use a DroppableFunction here. We can also add a DropHandler in the tree
@@ -416,11 +388,7 @@ public class CellTreeView extends Composite{
 
                          public void f(DragAndDropContext context) {
                                  GWT.log("DROPPED");
-                           /*MemberInfo droppedMember = context.getDraggableData();
-                           Permission dropPermission = context.getDroppableData();
-
-                           MemberDatabase.get().permissionChange(droppedMember, dropPermission);
-                                       */
+                           
                          }
                        });
                        // permission cell are not draggable
@@ -444,6 +412,7 @@ public class CellTreeView extends Composite{
                                return ((FolderResource)value).getFolders().size()==0;
                        if(value instanceof TrashResource)
                                return ((TrashResource)value).getFolders().size()==0;
+                       
                        return false;
                }
                
@@ -463,6 +432,7 @@ public class CellTreeView extends Composite{
                                                        selectionModel.setSelected(value, true);
                                                GWT.log("UPDATYING");
                                                GSS.get().onResourceUpdate(value);
+                                               
                                        }
        
                                        @Override
@@ -517,12 +487,17 @@ public class CellTreeView extends Composite{
                }
                
                  public void refresh(final RefreshHandler refresh){
+                         GWT.log("******************************************");
+                         GWT.log("[REFRESHING]:"+restResource.getUri());
+                         GWT.log("******************************************");
                          GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, restResource.getUri(), null) {
 
                                        @Override
                                        public void onComplete() {
                                                restResource = getResult();
                                                
+                                               if(CellTreeView.this.mymap.get(restResource.getUri())!=null)
+                                                       CellTreeView.this.mymap.get(restResource.getUri()).setRestResource(restResource);
                                                MultipleGetCommand<FolderResource> gf2 = new MultipleGetCommand<FolderResource>(FolderResource.class,
                                                                        ((FolderResource) restResource).getSubfolderPaths().toArray(new String[] {}), null) {
 
@@ -560,7 +535,7 @@ public class CellTreeView extends Composite{
 
                                };
                                DeferredCommand.addCommand(gf);
-                 }
+                 }               
        }
        
        
@@ -617,29 +592,55 @@ public class CellTreeView extends Composite{
        public TreeViewModel getModel() {
                return model;
        }
-       /*
-       private TreeNode getUserItem(TreeNode parent, RestResource folder) {
-               if(parent==null)
-                       parent = tree.getRootTreeNode();
-               TreeNode tmp = null;
-               if (parent.getValue() instanceof RestResource &&
-                                       (parent.getValue().equals(folder) ||
-                                       ((FolderResource) parent.getValue()).getUri().equals(folder.getUri())))
-                       return parent;
-               for (int i = 0; i < parent.getChildCount(); i++) {
-                       boolean op = parent.isChildOpen(i);
-                       TreeNode child = parent.setChildOpen(index, open, fireEvents)(i);
-                       if (child.getUserObject() instanceof FolderResource) {
-                               FolderResource dto = (FolderResource) child.getUserObject();
-                               if (dto.equals(folder) || dto.getUri().equals(folder.getUri()))
-                                       return child;
+       
+       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<count;i++){
+                       if(node.isChildOpen(i)){
+                               if(node.getChildValue(i).equals(resource)){
+                                       GWT.log("FOUND RESOURCE");
+                                       node.setChildOpen(i, false, true);
+                                       node.setChildOpen(i, true, true);
+                                       return;
+                               }
+                               else{
+                                       TreeNode n = node.setChildOpen(i, true);
+                                       if(n!=null)
+                                               refreshNodeContainingResource(n,resource);
+                               }
+                       }
+               }
+       }
+       
+       private void refreshNodeContainingResource(TreeNode node, String uri){
+               int count = node.getChildCount();
+               for(int i=0;i<count;i++){
+                       if(node.isChildOpen(i)){
+                               if(node.getChildValue(i) instanceof RestResource && ((RestResource)node.getChildValue(i)).getUri().equals(uri)){
+                                       GWT.log("FOUND RESOURCE");
+                                       node.setChildOpen(i, false, true);
+                                       node.setChildOpen(i, true, true);
+                                       return;
+                               }
+                               else{
+                                       TreeNode n = node.setChildOpen(i, true);
+                                       if(n!=null)
+                                               refreshNodeContainingResource(n,uri);
+                               }
                        }
-                       tmp = getUserItem(child, folder);
-                       if (tmp != null)
-                               return tmp;
                }
-               return null;
-       }*/
+       }
+       
        
        public interface RefreshHandler{
                void onRefresh();               
index c0af0ef..540d069 100644 (file)
@@ -37,7 +37,6 @@ import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.HTML;\r
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;\r
 import com.google.gwt.user.client.ui.HorizontalPanel;\r
-import com.google.gwt.user.client.ui.TreeItem;\r
 import com.google.gwt.user.client.ui.VerticalPanel;\r
 \r
 /**\r
@@ -118,6 +117,8 @@ public class DeleteFolderDialog extends DialogBox {
                                        GSS.get().getFolders().select(curFolder.getParentItem());\r
                                        GSS.get().getFolders().updateFolder((DnDTreeItem) curFolder.getParentItem());\r
                                }*/\r
+                               FolderResource fres = (FolderResource) GSS.get().getTreeView().getSelection();\r
+                               GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());\r
                                GSS.get().showFileList(true);\r
                                GSS.get().getStatusPanel().updateStats();\r
                        }\r
index b8c5543..c72bbf0 100644 (file)
@@ -44,7 +44,6 @@ import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.gwt.user.client.ui.MenuBar;
 import com.google.gwt.user.client.ui.MenuItem;
 import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.TreeItem;
 
 /**
  * The 'File Context' menu implementation.
index 24f6209..bd01650 100644 (file)
@@ -422,7 +422,8 @@ public class FileUploadGearsDialog extends FileUploadDialog implements Updateabl
         */
        protected void finish() {
                hide();
-               GSS.get().showFileList(true);
+               //GSS.get().showFileList(true);
+               GSS.get().getTreeView().updateNode(folder);//showFileList(true);
                GSS.get().getStatusPanel().updateStats();
        }
 
index c6de042..9f78cdc 100644 (file)
@@ -35,8 +35,6 @@ import com.google.gwt.event.dom.client.ChangeHandler;
 import com.google.gwt.event.dom.client.ClickEvent;\r
 import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.event.dom.client.KeyCodes;\r
-import com.google.gwt.event.dom.client.KeyDownEvent;\r
-import com.google.gwt.event.dom.client.KeyDownHandler;\r
 import com.google.gwt.http.client.URL;\r
 import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.json.client.JSONArray;\r
@@ -350,6 +348,7 @@ public class FolderPropertiesDialog extends DialogBox {
                        @Override\r
                        public void onComplete() {\r
                                //TODO:CELLTREE\r
+                               GSS.get().getTreeView().updateNodeChildren(folder);\r
                                //GSS.get().getFolders().updateFolder((DnDTreeItem) GSS.get().getFolders().getCurrent());\r
                        }\r
 \r
@@ -425,22 +424,23 @@ public class FolderPropertiesDialog extends DialogBox {
                        @Override\r
                        public void onComplete() {\r
                                //TODO:CELLTREE\r
-                               /*\r
+                               \r
                                if(getPostBody() != null && !"".equals(getPostBody().trim())){\r
                                        \r
-                                       DnDTreeItem folderItem = (DnDTreeItem) GSS.get().getFolders().getCurrent();\r
-                                       FolderResource fres = folderItem.getFolderResource();\r
+                                       \r
+                                       FolderResource fres = (FolderResource) GSS.get().getTreeView().getSelection();\r
                                        String initialPath = fres.getUri();\r
                                        String newPath =  getPostBody().trim();\r
                                        fres.setUri(newPath);\r
-\r
+                                       GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());\r
+                                       /*\r
                                        if(folderItem.getParentItem() != null && ((DnDTreeItem)folderItem.getParentItem()).getFolderResource() != null){\r
                                                ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().removeSubfolderPath(initialPath);\r
                                                ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().getSubfolderPaths().add(newPath);\r
-                                       }\r
+                                       }*/\r
                                }\r
-                               GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
-                               */\r
+                               //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+                               \r
                                GSS.get().showFileList(true);\r
                        }\r
 \r
index 710592d..7394c70 100644 (file)
@@ -60,6 +60,7 @@ public class RefreshCommand implements Command {
                        //DnDTreeItem selectedTreeItem = (DnDTreeItem) GSS.get().getFolders().getCurrent();
                        //if(selectedTreeItem != null){
                                //GSS.get().getFolders().updateFolder(selectedTreeItem);
+                       GSS.get().getTreeView().updateNode(GSS.get().getTreeView().getSelection());
                                GSS.get().showFileList(true);
                        //}
                }
index 689e7ce..5152ca6 100644 (file)
@@ -32,7 +32,6 @@ import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.TreeItem;
 
 /**
  *
@@ -70,6 +69,8 @@ public class ToTrashCommand implements Command{
                                        }
                                        GSS.get().getFolders().update(GSS.get().getFolders().getTrashItem());
                                        */
+                                       FolderResource fres = (FolderResource) GSS.get().getTreeView().getSelection();
+                                       GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());
                                        GSS.get().showFileList(true);
                                }
 
index cdf9ebf..cfb17a0 100644 (file)
@@ -315,3 +315,7 @@ table.gss-permList td {
        background:none repeat scroll 0 0 white;
        padding: 0;
 }
+
+.droppableHover {
+        background-color: #C1DEFD;
+}