Ejemplo n.º 1
0
        public void IterateTree(bool twoStagePass, Action <GenericTreeIterationArgs <InheritanceNode> > iterator)
        {
            CheckTreeRebuilded();
            var treeIterator = new GenericTreeIterator <InheritanceNode>(node => node.Childs);

            treeIterator.IterateTree(true, this, iterator);
        }
Ejemplo n.º 2
0
        private List <TreeNode> GetFlatList(TreeViewEx treeView)
        {
            List <TreeNode> flatList     = new List <TreeNode>();
            var             treeIterator = new GenericTreeIterator <TreeNode>(
                treeNode => treeNode.Nodes.OfType <TreeNode>(),
                () => treeView.Nodes.OfType <TreeNode>());

            treeIterator.IterateTree(false, null,
                                     delegate(GenericTreeIterationArgs <TreeNode> args)
            {
                if (!flatList.Contains(args.Current))
                {
                    flatList.Add(args.Current);
                }
            });

            return(flatList);
        }
Ejemplo n.º 3
0
        public void RebuildTree(bool rebuildPaths)
        {
            if (!treeRebuilded)
            {
                treeRebuilded = true;
            }

            var interfacesIterator = new GenericTreeIterator <IInterface>(@interface => @interface.GetCurrentLevelInheritedInterfaces());

            interfacesIterator.IterateTree(true, this.Interface, delegate(GenericTreeIterationArgs <IInterface, InheritanceNode> iterationArgs)
            {
                if (iterationArgs.CurrentStage == GenericTreeIterationStage.Leave)
                {
                    iterationArgs.Data = null;
                }
                else
                {
                    var childs = iterationArgs.Current.GetCurrentLevelInheritedInterfaces();

                    InheritanceNodeType nodeType = childs.Count() == 0
                                                       ? InheritanceNodeType.SuperRoot
                                                       : InheritanceNodeType.Node;

                    InheritanceNode parentNode = iterationArgs.Data ?? this;

                    InheritanceNode newNode = CreateNode(nodeType, parentNode, iterationArgs.Current, null);
                    parentNode.AddChild(newNode);

                    iterationArgs.Data = newNode;
                }
            });

            pathsRebuilded = false;

            if (rebuildPaths)
            {
                RebuildPaths();
            }
        }