minimize http requests on initialization (my shared and others)
authorGiannis Koutsoubos <koutsoub@gmail.com>
Thu, 11 Mar 2010 12:41:25 +0000 (14:41 +0200)
committerGiannis Koutsoubos <koutsoub@gmail.com>
Thu, 11 Mar 2010 12:41:25 +0000 (14:41 +0200)
on other's shared nodes use only requests needed for visible items

src/gr/ebs/gss/client/Folders.java
src/gr/ebs/gss/client/dnd/DnDTreeItem.java
src/gr/ebs/gss/client/tree/FolderSubtree.java
src/gr/ebs/gss/client/tree/MyShareSubtree.java
src/gr/ebs/gss/client/tree/OthersSharesSubtree.java
src/gr/ebs/gss/client/tree/Subtree.java

index 14d6615..dc89d12 100644 (file)
@@ -136,18 +136,22 @@ public class Folders extends Composite {
        }\r
 \r
        public void updateFolder(final DnDTreeItem folderItem) {\r
-               if (isFileItem(folderItem)) {\r
+               if (isFileItem(folderItem)){\r
                        folderSubtree.updateFolderAndSubfolders(folderItem);\r
                        myShareSubtree.updateFolderAndSubfolders((DnDTreeItem) getMySharesItem());\r
-               } else if (isMySharedItem(folderItem)) {\r
+               }\r
+               else if (isMySharedItem(folderItem)){\r
                        myShareSubtree.updateFolderAndSubfolders(folderItem);\r
                        if (folderItem.getFolderResource() != null) {\r
                                DnDTreeItem fitem = (DnDTreeItem) getUserItem(getRootItem(), folderItem.getFolderResource().getUri());\r
                                if (fitem != null)\r
                                        folderSubtree.updateFolderAndSubfolders(fitem);\r
-                       } else\r
-                               folderSubtree.updateFolderAndSubfolders((DnDTreeItem) getRootItem());\r
-               } else if (isTrashItem(folderItem))\r
+                               else\r
+                                       folderSubtree.updateFolderAndSubfolders((DnDTreeItem) getRootItem());\r
+                       }\r
+\r
+               }\r
+               else if (isTrashItem(folderItem))\r
                        trashSubtree.update();\r
                else if (isOthersSharedItem(folderItem))\r
                        othersSharesSubtree.updateFolderAndSubfolders(folderItem);\r
index 96c4236..13d8ac1 100644 (file)
@@ -17,7 +17,6 @@
  * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
  */
 package gr.ebs.gss.client.dnd;
-
 import gr.ebs.gss.client.Folders;
 import gr.ebs.gss.client.GSS;
 import gr.ebs.gss.client.PopupTree;
@@ -48,7 +47,7 @@ import com.google.gwt.user.client.ui.Widget;
  * @author kman
  *
  */
-public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
+public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers  {
        public static final int FOLDER = 0;
        public static final int SHARED = 1;
        public static final int TRASH = 2;
@@ -57,10 +56,16 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
        private DnDFocusPanel focus;
        private Widget content;
        private DnDDropController drop;
-       private List<DnDTreeItem> toRemove = new ArrayList();
+       private List<TreeItem> toRemove = new ArrayList();
        private boolean draggable = false;
        PopupTree tree;
-
+       public boolean lazy = false;
+       public DnDTreeItem(Widget widget, boolean _draggable, PopupTree atree, boolean _lazy){
+               this(widget,_draggable,atree);
+               lazy = _lazy;
+               if(lazy)
+                       addItem(new TreeItem());
+       }
        public DnDTreeItem(Widget widget, boolean _draggable, PopupTree atree) {
                super();
                tree=atree;
@@ -69,8 +74,6 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
                focus = new DnDFocusPanel(content,this);
                focus.setTabIndex(-1);
                setWidget(focus);
-
-
        }
 
        public void setFocus(){
@@ -84,7 +87,6 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
        }
 
 
-
        /**
         * Retrieve the drop.
         *
@@ -108,9 +110,10 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
        public void removeItems() {
                toRemove = new ArrayList();
                removeItems(this);
-               for(DnDTreeItem it : toRemove)
-                       if(it.getDrop() != null)
-                               GSS.get().getDragController().unregisterDropController(it.getDrop());
+               for(TreeItem it : toRemove)
+                       if(it instanceof DnDTreeItem)
+                               if(((DnDTreeItem)it).getDrop() != null)
+                                       GSS.get().getDragController().unregisterDropController(((DnDTreeItem)it).getDrop());
                toRemove.clear();
                super.removeItems();
 
@@ -152,9 +155,9 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
                        GSS.get().getDragController().unregisterDropController(getDrop());
        }
 
-       protected void removeItems(DnDTreeItem item){
+       protected void removeItems(TreeItem item){
                for(int i=0;i<item.getChildCount();i++) {
-                       DnDTreeItem it = (DnDTreeItem)item.getChild(i);
+                       TreeItem it = item.getChild(i);
                        toRemove.add(it);
                        removeItems(it);
                }
@@ -358,5 +361,4 @@ public class DnDTreeItem extends TreeItem implements HasAllMouseHandlers {
 
 
 
-
 }
index 95f1b8e..19e64a1 100644 (file)
@@ -68,7 +68,7 @@ public class FolderSubtree extends Subtree {
                        @Override
                        public void onComplete() {
                                FolderResource rootResource = getResult();
-                               rootItem = new DnDTreeItem(imageItemHTML(images.home(), rootResource.getName()), false,tree);
+                               rootItem = new DnDTreeItem(imageItemHTML(images.home(), rootResource.getName()), false,tree,true);
                                rootItem.setUserObject(rootResource);
                                tree.clear();
                                tree.addItem(rootItem);
index 06ff3c1..eeeead6 100644 (file)
@@ -67,12 +67,12 @@ public class MyShareSubtree extends Subtree {
 
                        @Override
                        public void onComplete() {
-                               rootItem = new DnDTreeItem(imageItemHTML(images.myShared(), "My Shared"), false,tree);
+                               rootItem = new DnDTreeItem(imageItemHTML(images.myShared(), "My Shared"), false,tree,true);
                                rootItem.setUserObject(getResult());
                                tree.addItem(rootItem);
-                               rootItem.removeItems();
+                               //rootItem.removeItems();
                                rootItem.doDroppable();
-                               update(rootItem);
+                               //update(rootItem);
                        }
 
                        @Override
@@ -221,8 +221,10 @@ public class MyShareSubtree extends Subtree {
                                @Override
                                public void onComplete() {
                                        rootItem.setUserObject(getResult());
-                                       rootItem.removeItems();
-                                       update(rootItem);
+                                       if(rootItem.getState()){
+                                               rootItem.removeItems();
+                                               update(rootItem);
+                                       }
                                }
 
                                @Override
index d7e7023..8f2aff8 100644 (file)
@@ -72,11 +72,11 @@ public class OthersSharesSubtree extends Subtree {
 
                        @Override
                        public void onComplete() {
-                               rootItem = new DnDTreeItem(imageItemHTML(images.othersShared(), "Other's Shared"), false,tree);
+                               rootItem = new DnDTreeItem(imageItemHTML(images.othersShared(), "Other's Shared"), false,tree,true);
                                rootItem.setUserObject(getResult());
                                tree.addItem(rootItem);
-                               rootItem.removeItems();
-                               update(rootItem);
+                               //rootItem.removeItems();
+                               //update(rootItem);
                                GSS.get().removeGlassPanel();
                        }
 
@@ -115,8 +115,6 @@ public class OthersSharesSubtree extends Subtree {
                                                                                        r.getName(), images.folderYellow(), true);
                                                                child.setUserObject(r);
                                                                child.setState(false);
-                                                               if(folderItem.getState())
-                                                                       update(child);
                                                        }
                                                }
 
@@ -156,9 +154,7 @@ public class OthersSharesSubtree extends Subtree {
                                                DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem,
                                                                        r.getName(), images.folderYellow(), true);
                                                child.setUserObject(r);
-                                               child.setState(false);
                                                child.doDraggable();
-                                               update(child);
                                                updateFolderAndSubfolders(child);
                                        }
                                }
@@ -172,7 +168,7 @@ public class OthersSharesSubtree extends Subtree {
                        };
                        DeferredCommand.addCommand(go);
                } else if (folderItem.getFolderResource() != null) {
-
+                       GWT.log("UPDATING :"+folderItem.getFolderResource().getName(), null);
                        MultipleGetCommand<FolderResource> go = new MultipleGetCommand<FolderResource>(FolderResource.class,
                                                folderItem.getFolderResource().getSubfolderPaths().toArray(new String[] {}), folderItem.getFolderResource().getCache()) {
 
@@ -180,13 +176,12 @@ public class OthersSharesSubtree extends Subtree {
                                public void onComplete() {
                                        List<FolderResource> res = getResult();
                                        folderItem.removeItems();
+                                       GWT.log("UPDATING :"+folderItem.getFolderResource().getName()+" :"+res.size(), null);
                                        for (FolderResource r : res) {
                                                DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem,
                                                                        r.getName(), images.folderYellow(), true);
                                                child.setUserObject(r);
-                                               child.setState(false);
                                                child.doDraggable();
-                                               update(child);
                                        }
                                }
 
@@ -218,7 +213,6 @@ public class OthersSharesSubtree extends Subtree {
                                        folderItem.updateWidget(imageItemHTML(images.folderYellow(), rootResource.getName()));
                                        folderItem.setUserObject(rootResource);
                                        folderItem.doDraggable();
-                                       update(folderItem);
                                }
 
                                @Override
index 7c85a79..25389bf 100644 (file)
@@ -55,7 +55,7 @@ public abstract class Subtree {
         * @return
         */
        protected TreeItem addImageItem(final TreeItem parent, final String title, final ImageResource imageProto, boolean draggable) {
-               final DnDTreeItem item = new DnDTreeItem(imageItemHTML(imageProto, title), draggable,tree);
+               final DnDTreeItem item = new DnDTreeItem(imageItemHTML(imageProto, title), draggable,tree,true);
                parent.addItem(item);
                return item;
        }
@@ -74,12 +74,17 @@ public abstract class Subtree {
 
        public void updateSubFoldersLazily(DnDTreeItem folderItem, List<FolderResource> subfolders, ImageResource image, ImageResource sharedImage) {
                for (int i = 0; i < folderItem.getChildCount(); i++) {
-                       DnDTreeItem c = (DnDTreeItem) folderItem.getChild(i);
-                       FolderResource f = (FolderResource) c.getUserObject();
-                       if (!listContainsFolder(f, subfolders)) {
-                               c.undoDraggable();
-                               folderItem.removeItem(c);
+                       TreeItem initialItem = folderItem.getChild(i);
+                       if(initialItem instanceof DnDTreeItem){
+                               DnDTreeItem c = (DnDTreeItem)initialItem;
+                               FolderResource f = (FolderResource) c.getUserObject();
+                               if (!listContainsFolder(f, subfolders)) {
+                                       c.undoDraggable();
+                                       folderItem.removeItem(c);
+                               }
                        }
+                       else
+                               folderItem.removeItem(initialItem);
                }
 
                LinkedList<DnDTreeItem> itemList = new LinkedList();