コード例 #1
0
        private List <TreeNode> BuildSymbolTree(IBaseNode rootEntityNode, TreeNode rootTreeNode, IBaseNode selectedEntityNode)
        {
            List <TreeNode> result = new List <TreeNode>();

            foreach (IBaseNode childEntityNode in rootEntityNode.Children)
            {
                if (typeof(DoxygenNode).Equals(childEntityNode.GetType()))
                {
                    DoxygenNode   doxyNode = (DoxygenNode)childEntityNode;
                    DoxygenEntity entity   = doxyNode.Entity;
                    if (!AllowedDoxyEntities.Contains(entity.Kind))
                    {
                        continue;
                    }

                    TreeNode parentNode;
                    if (childEntityNode.ShowChildren)
                    {
                        parentNode     = new TreeNode(entity.DisplayName);
                        parentNode.Tag = childEntityNode;
                        rootTreeNode.Nodes.Add(parentNode);
                        if (selectedEntityNode != null)
                        {
                            if (selectedEntityNode.CompareTo(childEntityNode) == 0)
                            {
                                result.Add(parentNode);
                            }
                        }
                    }
                    else
                    {
                        parentNode = rootTreeNode;
                    }
                    result.AddRange(BuildSymbolTree(childEntityNode, parentNode, selectedEntityNode));
                }
            }
            return(result);
        }