Various experiments with asynchronous data providers
[pithos] / web_client / src / gr / grnet / pithos / web / client / foldertree / FolderTreeView.java
index 273d028..363cb74 100644 (file)
@@ -52,21 +52,43 @@ import com.google.gwt.user.client.ui.Tree;
 
 public class FolderTreeView extends Composite implements TreeView {
 
-    public void updateChildren(Folder folder) {
+       public boolean isFolderOpen(Folder folder) {
         TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
-        updateChildren(root, folder);
+        return isFolderOpen(root, folder);
+       }
+       
+       private boolean isFolderOpen(TreeNode node, Folder folder) {
+        for (int i=0; i<node.getChildCount(); i++) {
+            if (folder.equals(node.getChildValue(i))) {
+                return node.isChildOpen(i);
+            }
+            else {
+                if (node.isChildOpen(i)) {
+                    TreeNode n = node.setChildOpen(i, true);
+                    return isFolderOpen(n, folder);
+                }
+            }
+       }
+        return false;
+       }
+       
+    public void openFolder(Folder folder) {
+        TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
+        openFolder(root, folder);
     }
 
-    private void updateChildren(TreeNode node, Folder folder) {
+    private void openFolder(TreeNode node, Folder folder) {
         for (int i=0; i<node.getChildCount(); i++) {
             if (folder.equals(node.getChildValue(i))) {
-                node.setChildOpen(i, false, false);
-                node.setChildOpen(i, true, false);
+               node.setChildOpen(i, false, true);
+               node.setChildOpen(i, true, true);
+               break;
             }
             else {
                 if (node.isChildOpen(i)) {
                     TreeNode n = node.setChildOpen(i, true);
-                    updateChildren(n, folder);
+                    openFolder(n, folder);
+                    break;
                 }
             }
        }