public static void removeNodeStructure(NodeStructure nodeStructure, NodeStructureList nodeStructureList) { for (int i = 0; i < nodeStructureList.Count; i++) { if (nodeStructureList[i].name == nodeStructure.name) { nodeStructureList.RemoveAt(i); } } nodeStructureList = NodeStructureListManager.alphabetize(nodeStructureList); nodeStructureList = NodeStructureListManager.reindex(nodeStructureList); }
public static void addNodeStructure(NodeStructure nodeStructure, NodeStructureList nodeStructureList) { nodeStructureList.Add(nodeStructure); nodeStructureList = NodeStructureListManager.alphabetize(nodeStructureList); nodeStructureList = NodeStructureListManager.reindex(nodeStructureList); }
public static NodeStructureList getNewRequests(NodeStructureList nodeStructureList, TreeView treeView, string rootDirectory, bool isFresh, int occurance, TreeNode treeNode) { try { if (isFresh) nodeStructureList = new NodeStructureList(); if (occurance == 1) saveExpandedState(nodeStructureList, treeView); string[] nodeStructures = System.IO.Directory.GetDirectories(rootDirectory); NodeStructure nodeStructure = null, requestNodeStructure = null, nodeStructureFile = null; string[] files = null; int i = 0; foreach (string nodeStructureString in nodeStructures) { nodeStructure = new NodeStructure(); nodeStructure.path = nodeStructureString; nodeStructure.isParent = true; NodeStructureManager.getName(nodeStructure, NodeStructureManager.getStructureType(nodeStructure)); if (!NodeStructureListManager.containsNodeStructure(nodeStructureList, nodeStructure)) { NodeStructureListManager.addNodeStructure(nodeStructure, nodeStructureList); } else { nodeStructure = NodeStructureListManager.getNodeStructureWithName(nodeStructureList, nodeStructure.name); nodeStructure.children = NodeStructureListManager.getNodeStructureWithName(nodeStructureList, nodeStructure.name).children; NodeStructureManager.assignParentNames(nodeStructure); } string[] requestNodeStructures = System.IO.Directory.GetDirectories(nodeStructure.path + "\\Requests"); foreach (string requestNodeStructureString in requestNodeStructures) { requestNodeStructure = new NodeStructure(); requestNodeStructure.path = requestNodeStructureString; requestNodeStructure.isChild = true; requestNodeStructure.isParent = true; NodeStructureManager.getName(requestNodeStructure, ENodeSructureType.BOTH); if (!NodeStructureListManager.containsNodeStructure(nodeStructure.children, requestNodeStructure)) { NodeStructureListManager.removeNodeStructure(nodeStructure, nodeStructureList); NodeStructureManager.addChild(nodeStructure, requestNodeStructure); NodeStructureListManager.addNodeStructure(nodeStructure, nodeStructureList); } else { requestNodeStructure = NodeStructureListManager.getNodeStructureWithName(nodeStructure.children, requestNodeStructure.name); requestNodeStructure.children = NodeStructureListManager.getNodeStructureWithName(nodeStructure.children, requestNodeStructure.name).children; NodeStructureManager.assignParentNames(requestNodeStructure); } files = System.IO.Directory.GetFiles(requestNodeStructure.path); foreach (string file in files) { nodeStructureFile = new NodeStructure(); nodeStructureFile.path = file; nodeStructureFile.isChild = true; NodeStructureManager.getName(nodeStructureFile, NodeStructureManager.getStructureType(nodeStructureFile)); if (!NodeStructureListManager.containsNodeStructure(requestNodeStructure.children, nodeStructureFile)) { NodeStructure node3 = requestNodeStructure; NodeStructureListManager.removeNodeStructure(node3, nodeStructure.children); NodeStructureManager.addChild(node3, nodeStructureFile); NodeStructureManager.uncheck(nodeStructureList, node3, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); NodeStructureListManager.addNodeStructure(node3, nodeStructure.children); requestNodeStructure = node3; } } for (int h = 0; h < requestNodeStructure.children.Count; h++) { if (!files.Contains(requestNodeStructure.children[h].path)) { NodeStructureListManager.removeNodeStructure(requestNodeStructure.children[h], requestNodeStructure.children); if (NodeStructureManager.allChildrenChecked(requestNodeStructure)) NodeStructureManager.check(nodeStructureList, requestNodeStructure, ENodeStructureCheckedEntryPoint.FORCEDBYCHILD); } } requestNodeStructure.children = NodeStructureListManager.alphabetize(requestNodeStructure.children); requestNodeStructure.children = NodeStructureListManager.reindex(requestNodeStructure.children); requestNodeStructure.children = NodeStructureListManager.removeDuplicateNodes(requestNodeStructure.children); } for (int x = 0; x < nodeStructure.children.Count; x++) { if (!requestNodeStructures.Contains(nodeStructure.children[x].path)) NodeStructureListManager.removeNodeStructure(nodeStructure.children[x], nodeStructure.children); } nodeStructureList[i].children = NodeStructureListManager.alphabetize(nodeStructureList[i].children); nodeStructureList[i].children = NodeStructureListManager.reindex(nodeStructureList[i].children); nodeStructureList[i].children = NodeStructureListManager.removeDuplicateNodes(nodeStructureList[i].children); i++; } for (int k = 0; k < nodeStructureList.Count; k++) { if (!nodeStructures.Contains(nodeStructureList[k].path)) NodeStructureListManager.removeNodeStructure(nodeStructureList[k], nodeStructureList); } nodeStructureList = NodeStructureListManager.alphabetize(nodeStructureList); nodeStructureList = NodeStructureListManager.reindex(nodeStructureList); nodeStructureList = NodeStructureListManager.removeDuplicateNodes(nodeStructureList); return nodeStructureList; } catch (Exception) { MessageBox.Show("Error loading files. Please check directory formatting."); Form1.Logger.Error("Error loading files. Please check directory formatting."); Application.Exit(); return null; } }
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 EDifferenceToMake differencesExist(NodeStructure nodeStructure, TreeNode treeNode) { if (treeNode.Checked) { if (nodeStructure.isChecked == false) { return (EDifferenceToMake)(0); } else return (EDifferenceToMake)(2); } else if (!treeNode.Checked) { if (nodeStructure.isChecked == true) { return (EDifferenceToMake)(1); } else return (EDifferenceToMake)(2); } else return (EDifferenceToMake)(2); }
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 addChild(NodeStructure parentNodeStructure, NodeStructure childNodeStructure) { NodeStructureListManager.addNodeStructure(childNodeStructure, parentNodeStructure.children); childNodeStructure.parentName = parentNodeStructure.name; }
public static bool allChildrenChecked(NodeStructure parentNodeStructure) { //Precondition: parentNodeStructure is a parent foreach (NodeStructure childNodeStructure in parentNodeStructure.children) { if (!childNodeStructure.isChecked) return false; } return true; }
public static void addPath(NodeStructure nodeStructure, string path) { nodeStructure.path = path; }
public static void assignParentNames(NodeStructure parentNodeStructure) { for (int i = 0; i < parentNodeStructure.children.Count; i++) { parentNodeStructure.children[i].parentName = parentNodeStructure.name; } }
public static ENodeSructureType getStructureType(NodeStructure nodeStructure) { if (nodeStructure.isParent && nodeStructure.isChild) { return (ENodeSructureType)2; } else if (nodeStructure.isParent) { return (ENodeSructureType)0; } else if (nodeStructure.isChild) { return (ENodeSructureType)1; } return (ENodeSructureType)(-1); }
public static NodeStructure getParentNodeStructure(NodeStructure nodeStructure, NodeStructureList largeList) { for (int i = 0; i < largeList.Count; i++) { if (largeList[i].name == nodeStructure.parentName) return largeList[i]; } for (int j = 0; j < largeList.Count; j++) { for (int k = 0; k < largeList[j].children.Count; k++) { if (largeList[j].children[k].name == nodeStructure.parentName) return largeList[j].children[k]; } } return null; }
public static void getName(NodeStructure nodeStructure, ENodeSructureType nodeStructureType) { switch (nodeStructureType) { case (ENodeSructureType)0: { // Parent System.IO.DirectoryInfo directoryInfo = new DirectoryInfo(nodeStructure.path); nodeStructure.name = directoryInfo.Name; break; } case (ENodeSructureType)1: { // Child nodeStructure.name = Path.GetFileNameWithoutExtension(nodeStructure.path); break; } case (ENodeSructureType)2: { // Both DirectoryInfo directoryInfo = new DirectoryInfo(nodeStructure.path); nodeStructure.name = directoryInfo.Name; break; } } }
public static TreeNode toTreeNode(NodeStructure nodeStructure) { TreeNode treeNode = new TreeNode(); treeNode.Name = nodeStructure.name; treeNode.Text = nodeStructure.name; treeNode.Tag = nodeStructure; treeNode.Checked = nodeStructure.isChecked; return treeNode; }
public static void removePath(NodeStructure nodeStructure) { nodeStructure.path = null; }
public static bool containsNodeStructure(NodeStructureList nodeStructureList, NodeStructure nodeStructure) { foreach (NodeStructure node in nodeStructureList) { if (node.name == nodeStructure.name) { return true; } } return false; }
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); } } } }