public static void synchronize(EDifferenceToMake differenceToMake, NodeStructure nodeStructure, NodeStructureList nodeStructureList, TreeView treeView, ENodeStructureCheckedEntryPoint nodeStructureCheckedEntryPoint, TreeNode treeNode, int occurance) { switch (nodeStructureCheckedEntryPoint) { case (ENodeStructureCheckedEntryPoint)(0): { switch (differenceToMake) { case (EDifferenceToMake)(0): { nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.USER; NodeStructureManager.check(nodeStructureList, nodeStructure, (ENodeStructureCheckedEntryPoint)(0)); break; } case (EDifferenceToMake)(1): { nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.USER; NodeStructureManager.uncheck(nodeStructureList, nodeStructure, (ENodeStructureCheckedEntryPoint)(0)); break; } } break; } case (ENodeStructureCheckedEntryPoint)(1): { switch (differenceToMake) { case (EDifferenceToMake)(0): { //nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.FORCED; NodeStructureManager.uncheck(nodeStructureList, nodeStructure, (ENodeStructureCheckedEntryPoint)(1)); nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.USER; break; } case (EDifferenceToMake)(1): { //nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.FORCED; NodeStructureManager.check(nodeStructureList, nodeStructure, (ENodeStructureCheckedEntryPoint)(1)); nodeStructureCheckedEntryPoint = ENodeStructureCheckedEntryPoint.USER; break; } } break; } } fillTreeView(nodeStructureList, treeView, treeNode, occurance); }
public static void check(NodeStructureList nodeStructureList, NodeStructure nodeStructure, ENodeStructureCheckedEntryPoint nodeStructureCheckedEntryPoint) { if (nodeStructure.isChild) { NodeStructure parent = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); NodeStructureListManager.removeNodeStructure(nodeStructure, parent.children); nodeStructure.isChecked = true; NodeStructureListManager.addNodeStructure(nodeStructure, parent.children); if (nodeStructure.isParent) { if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYPARENT) { for (int i = 0; i < nodeStructure.children.Count; i++) { check(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYCHILD) { //Maybe check parent. NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); if (NodeStructureManager.allChildrenChecked(parentNodeStructure)) check(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { //Do both of the above. for (int i = 0; i < nodeStructure.children.Count; i++) { check(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); if (NodeStructureManager.allChildrenChecked(parentNodeStructure)) check(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } } else { //Just a child that was selected. if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); if (NodeStructureManager.allChildrenChecked(parentNodeStructure)) check(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYPARENT) { //Do nothing...last level. } } } else if (nodeStructure.isParent) { nodeStructure.isChecked = true; //Just a parent - top level if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYPARENT) { //Impossible. } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYCHILD) { //Done - no more. } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { for (int i = 0; i < nodeStructure.children.Count; i++) { check(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } } } }
public static void updateRequests(NodeStructureList nodeStructureList, TreeView treeView, ENodeStructureCheckedEntryPoint nodeStructureCheckedEntryPoint, TreeNode treeNode, int occurance) { if (occurance == 1) saveExpandedState(nodeStructureList, treeView); NodeStructure nodeStructure = null, childNodeStructure = null, endNodeStructure = null; for (int i = 0; i < treeView.Nodes.Count; i++) { nodeStructure = (NodeStructure)(treeView.Nodes[i].Tag); if (differencesExist(nodeStructure, treeView.Nodes[i]) == (EDifferenceToMake)(0) || differencesExist(nodeStructure, treeView.Nodes[i]) == (EDifferenceToMake)(1)) synchronize(differencesExist(nodeStructure, treeView.Nodes[i]), nodeStructure, nodeStructureList, treeView, nodeStructureCheckedEntryPoint, treeNode, occurance); if (nodeStructure.isParent) { for (int j = 0; j < treeView.Nodes[i].Nodes.Count; j++) { childNodeStructure = (NodeStructure)(treeView.Nodes[i].Nodes[j].Tag); if (differencesExist(childNodeStructure, treeView.Nodes[i].Nodes[j]) == (EDifferenceToMake)(0) || differencesExist(childNodeStructure, treeView.Nodes[i].Nodes[j]) == (EDifferenceToMake)(1)) synchronize(differencesExist(childNodeStructure, treeView.Nodes[i].Nodes[j]), childNodeStructure, nodeStructureList, treeView, nodeStructureCheckedEntryPoint, treeNode, occurance); if (childNodeStructure.isParent) { for (int k = 0; k < treeView.Nodes[i].Nodes[j].Nodes.Count; k++) { endNodeStructure = (NodeStructure)(treeView.Nodes[i].Nodes[j].Nodes[k].Tag); if (differencesExist(endNodeStructure, treeView.Nodes[i].Nodes[j].Nodes[k]) == (EDifferenceToMake)(0) || differencesExist(endNodeStructure, treeView.Nodes[i].Nodes[j].Nodes[k]) == (EDifferenceToMake)(1)) synchronize(differencesExist(endNodeStructure, treeView.Nodes[i].Nodes[j].Nodes[k]), endNodeStructure, nodeStructureList, treeView, nodeStructureCheckedEntryPoint, treeNode, occurance); } } } } } }
public static void uncheck(NodeStructureList nodeStructureList, NodeStructure nodeStructure, ENodeStructureCheckedEntryPoint nodeStructureCheckedEntryPoint) { if (nodeStructure.isChild) { NodeStructure parent = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); NodeStructureListManager.removeNodeStructure(nodeStructure, parent.children); nodeStructure.isChecked = false; NodeStructureListManager.addNodeStructure(nodeStructure, parent.children); if (nodeStructure.isParent) { if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYPARENT) { for (int i = 0; i < nodeStructure.children.Count; i++) { uncheck(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYCHILD) { //Uncheck parent NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); uncheck(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { //Do both of the above. for (int i = 0; i < nodeStructure.children.Count; i++) { uncheck(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); uncheck(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } } else { //Just a child was selected if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { //Uncheck parent NodeStructure parentNodeStructure = NodeStructureManager.getParentNodeStructure(nodeStructure, nodeStructureList); uncheck(nodeStructureList, parentNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } else if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.FORCEDBYPARENT) { //Do nothing...last level. } } } else if (nodeStructure.isParent) { nodeStructure.isChecked = false; //Just a parent //top level. //FORCEDBYPARENT = IMPOSSIBLE //FORCEDBYCHILD = DONE if (nodeStructureCheckedEntryPoint == ENodeStructureCheckedEntryPoint.USER) { //Uncheck children and thus all below. for (int i = 0; i < nodeStructure.children.Count; i++) { uncheck(nodeStructureList, nodeStructure.children[i], ENodeStructureCheckedEntryPoint.FORCEDBYPARENT); } } } }