/// <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); } }