Alexander Wels has uploaded a new change for review.

Change subject: webadmin: expand all expands selected node
......................................................................

webadmin: expand all expands selected node

- Added logic to find the selected node and pass
that into the node expansion method.
- Added logic to find the selected node and pass
that into the node collapse method.
- Fixed the node collapse to properly collapse all
sub nodes AND itself.

Change-Id: I110efdff51be6e5545a1de304bdce657ec5cda88
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=879291
Signed-off-by: Alexander Wels <[email protected]>
---
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTree.java
1 file changed, 43 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/10913/1

diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTree.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTree.java
index a941184..a8b89ea 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTree.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTree.java
@@ -7,6 +7,7 @@
 import org.ovirt.engine.ui.common.widget.action.SimpleActionPanel;
 import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider;
@@ -56,7 +57,10 @@
                 return new UICommand(constants.treeExpandAll(), new 
BaseCommandTarget() {
                     @Override
                     public void ExecuteCommand(UICommand command) {
-                        expandTree(display.getRootTreeNode(), true);
+                        TreeNode expandNode = 
findNode(display.getRootTreeNode(), 
modelProvider.getSelectionModel().getSelectedObject());
+                        if(expandNode != null) {
+                            expandTree(expandNode);
+                        }
                     }
                 });
             }
@@ -68,7 +72,10 @@
                 return new UICommand(constants.treeCollapseAll(), new 
BaseCommandTarget() {
                     @Override
                     public void ExecuteCommand(UICommand command) {
-                        expandTree(display.getRootTreeNode(), false);
+                        TreeNode collapseNode = 
findNode(display.getRootTreeNode(), 
modelProvider.getSelectionModel().getSelectedObject());
+                        if(collapseNode != null) {
+                            collapseTree(collapseNode);
+                        }
                     }
                 });
             }
@@ -81,7 +88,7 @@
             @Override
             public void eventRaised(Event ev, Object sender, EventArgs args) {
                 // Collapse tree on refresh
-                expandTree(display.getRootTreeNode(), false);
+                collapseTree(display.getRootTreeNode());
 
                 // Workaround for bug 856233. Force a root tree node to be 
opened.
                 // This won't cause visual changes, i.e. after refresh the tree
@@ -104,18 +111,46 @@
         return display;
     }
 
-    private void expandTree(TreeNode node, boolean collapse) {
+    private void expandTree(TreeNode node) {
         if (node == null) {
             return;
         }
 
-        if (node.getChildCount() > 0) {
-            for (int i = 0; i < node.getChildCount(); i++) {
-                expandTree(node.setChildOpen(i, collapse), collapse);
-            }
+        for (int i = 0; i < node.getChildCount(); i++) {
+            expandTree(node.setChildOpen(i, true));
         }
     }
 
+    private void collapseTree(TreeNode node) {
+        TreeNode parent = node.getParent();
+        if(parent == null) {
+            node.setChildOpen(0, false);
+        } else {
+            parent.setChildOpen(node.getIndex(), false);
+        }
+    }
+
+    private TreeNode findNode(TreeNode node, SystemTreeItemModel model) {
+        TreeNode result = null;
+        if(node == null) {
+            return null;
+        }
+
+        int i = 0;
+        while(result == null && i < node.getChildCount()) {
+            if(null != model && model.equals(node.getChildValue(i))) {
+                result = node.setChildOpen(i, true);
+                break;
+            }
+            //Only check open nodes, otherwise they couldn't have been 
selected.
+            if(node.isChildOpen(i)) {
+                result = findNode(node.setChildOpen(i, true), model);
+            }
+            i++;
+        }
+        return result;
+    }
+
     public interface SystemTreeResources extends CellTree.Resources {
         interface TableStyle extends CellTable.Style {
         }


--
To view, visit http://gerrit.ovirt.org/10913
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I110efdff51be6e5545a1de304bdce657ec5cda88
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to