/// <summary> Saves the settings of the <paramref name="nodes"/> and returns this control state </summary> private Pair[] SaveNodesStateRecursive(WebTreeNodeCollection nodes) { Pair[] nodesState = new Pair[nodes.Count]; for (int i = 0; i < nodes.Count; i++) { WebTreeNode node = (WebTreeNode)nodes[i]; Pair nodeState = new Pair(); object[] values = new object[10]; values[0] = node.ItemID; values[1] = node.IsExpanded; values[2] = node.IsEvaluated; values[3] = node.IsSelected; values[4] = node.MenuID; values[5] = node.Text; values[6] = node.ToolTip; values[7] = node.Icon; if (node is BusinessObjectTreeNode) { values[8] = ((BusinessObjectTreeNode)node).PropertyIdentifier; values[9] = true; } else { values[9] = false; } nodeState.First = values; nodeState.Second = SaveNodesStateRecursive(node.Children); nodesState[i] = nodeState; } return(nodesState); }
private void ApplyNodesControlStateRecursive(Pair[] nodesState, WebTreeNodeCollection nodes) { for (int i = 0; i < nodesState.Length; i++) { Pair nodeState = nodesState[i]; object[] values = (object[])nodeState.First; string itemID = (string)values[0]; WebTreeNode node = nodes.Find(itemID); if (node != null) { if (!node.IsEvaluated) { bool isEvaluated = (bool)values[2]; if (isEvaluated) { node.EvaluateExpand(); } } if (node.IsEvaluated) { bool isExpanded = (bool)values[1]; node.IsExpanded = isExpanded; if (node.Children.Count == 0) { node.IsExpanded = false; } } ApplyNodesControlStateRecursive((Pair[])nodeState.Second, node.Children); } } }
private void ExpandTreeNodes(WebTreeNodeCollection webTreeNodeCollection) { foreach (WebTreeNode treeNode in webTreeNodeCollection) { treeNode.EvaluateExpand(); ExpandTreeNodes(treeNode.Children); } }
/// <summary> Loads the settings of the <paramref name="nodes"/> from <paramref name="nodesState"/>. </summary> private void LoadNodesControlStateRecursive(Pair[] nodesState, WebTreeNodeCollection nodes) { for (int i = 0; i < nodesState.Length; i++) { Pair nodeState = nodesState[i]; object[] values = (object[])nodeState.First; string itemID = (string)values[0]; bool isExpanded = (bool)values[1]; bool isEvaluated = (bool)values[2]; bool isSelected = (bool)values[3]; string menuID = (string)values[4]; string text = (string)values[5]; string toolTip = (string)values[6]; IconInfo icon = (IconInfo)values[7]; bool isBusinessObjectTreeNode = (bool)values[9]; WebTreeNode node; if (isBusinessObjectTreeNode) { node = new BusinessObjectTreeNode(itemID, text, toolTip, icon, null, null); string propertyIdentifier = (string)values[8]; ((BusinessObjectTreeNode)node).PropertyIdentifier = propertyIdentifier; } else { node = new BusinessObjectPropertyTreeNode(itemID, text, toolTip, icon, null); } node.IsExpanded = isExpanded; node.IsEvaluated = isEvaluated; if (isSelected) { node.IsSelected = true; } node.MenuID = menuID; nodes.Add(node); LoadNodesControlStateRecursive((Pair[])nodeState.Second, node.Children); } }