Exemple #1
0
        public async Task CreateTree(TreeNodeItem node, TreeView control, SynchronizationContext c)
        {
            TreeNode root = null;

            c.Send((s) =>
            {
                control.Nodes.Clear();
                root = control.Nodes.Add("root");
            }, null);

            await Task.Run(async() =>
            {
                foreach (var item in node.Nodes)
                {
                    await WalkTree(control, c, item, root);
                }
            });
        }
Exemple #2
0
        async Task <TreeNodeItem> MakeTree(NameContainer[] names)
        {
            return(await Task.Run <TreeNodeItem>(async() =>
            {
                var root = new TreeNodeItem {
                    Name = "root"
                };

                foreach (var name in names)
                {
                    var path = name.Name;
                    await WalkPath(root, path, path, name);
                }


                return root;
            }));
        }
Exemple #3
0
        async Task WalkTree(TreeView control, SynchronizationContext c, TreeNodeItem nodeItem, TreeNode node)
        {
            TreeNode newNode = null;

            c.Send((s) =>
            {
                newNode     = node.Nodes.Add(nodeItem.Name);
                newNode.Tag = nodeItem;
            }, null);

            await Task.Run(async() =>
            {
                if (!nodeItem.Final)
                {
                    foreach (var item in nodeItem.Nodes)
                    {
                        await WalkTree(control, c, item, newNode);
                    }
                }
            });
        }
Exemple #4
0
        async Task WalkPath(TreeNodeItem node, string path, string fullpath, NameContainer name)
        {
            await Task.Run(async() =>
            {
                var pathArray = path.Split('.');
                if (pathArray == null || pathArray.Length <= 1)
                {
                    if (!node.Nodes.Any(p => p.Path == path))
                    {
                        var next = new TreeNodeItem {
                            Path = path, Name = path, Final = true, NameContainer = name
                        };
                        node.Nodes.Add(next);
                    }
                }
                else
                {
                    var newPath = string.Join(".", pathArray.Skip(1));
                    var curPath = string.Join(".", pathArray.Take(1));

                    TreeNodeItem next = null;
                    if (!node.Nodes.Any(p => p.Path == curPath))
                    {
                        next = new TreeNodeItem {
                            Name = pathArray[0], Path = curPath
                        };
                        node.Nodes.Add(next);
                    }
                    else
                    {
                        next = node.Nodes.First(p => p.Path == curPath);
                    }

                    await WalkPath(next, newPath, fullpath, name);
                }
            });
        }