コード例 #1
0
        private TreeNode AddCompareNodes(TreeNode root, CrossCompareSet set, Func <CrossCompare, TreeNode> constructor)
        {
            // sort directories
            SortedList <string, TreeNode> duplicatePath = new SortedList <string, TreeNode>(); //new StringCompareSizeFirst()

            // sort filenames
            var nameFirst = set.ToArray();

            Array.Sort(nameFirst, new CrossCompareNameFirst());

            // create directory nodes
            foreach (var file in nameFirst)
            {
                var smallerPath = file.left.SmallerLocalPath(file.right);
                if (!duplicatePath.ContainsKey(smallerPath.localPath))
                {
                    var node = new TreeNode(smallerPath.localPath, 1, 1);
                    node.ContextMenuStrip = rootNodeMenu;
                    duplicatePath.Add(smallerPath.localPath, node);
                }
            }

            // add file nodes
            foreach (var file in nameFirst)
            {
                lock (unlisted)
                {
                    unlisted.Remove(file.left);
                    unlisted.Remove(file.right);
                }
                duplicatePath[file.left.SmallerLocalPath(file.right).localPath].Nodes.Add(constructor(file));
            }

            // add directory nodes to the tree
            foreach (var node in duplicatePath)
            {
                root.Nodes.Add(node.Value);
            }

            return(root);
        }
コード例 #2
0
        private TreeNode AddInconsistencies(TreeNode root, CrossCompareSet duplicates, CrossCompareSet refactored, SortedSet <FileCompareData> empty)
        {
            var tasks = MultiTask.Run(new Func <TreeNode>[]
            {
                () => { return(AddDuplicates(new TreeNode("Left Duplicates", 1, 1), duplicates)); },
                () => { return(AddRefactored(new TreeNode("Left Refactored", 1, 1), refactored)); },
                () => { return(AddEmpty(new TreeNode("Left Empty", 1, 1), empty)); },
            });

            Task.WhenAll(tasks);
            foreach (var t in tasks)
            {
                var node = t.Result;
                if (node.Nodes.Count > 0)
                {
                    root.Nodes.Add(t.Result);
                }
            }

            return(root);
        }
コード例 #3
0
 private TreeNode AddRefactored(TreeNode root, CrossCompareSet set) => AddCompareNodes(root, set, (CrossCompare compare) => { return(new RefactoredNode(compare, 4)); });
コード例 #4
0
 private TreeNode AddDuplicates(TreeNode root, CrossCompareSet set) => AddCompareNodes(root, set, (CrossCompare compare) => { return(new DuplicateNode(compare, 1)); });