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
