Example #1
0
 private void AddRegions(TreeNodeCollection tree, MemberList members)
 {
     foreach (MemberModel member in members)
     {
         MemberTreeNode node = new MemberTreeNode(member, ICON_PACKAGE);
         tree.Add(node);
     }
 }
Example #2
0
        private void AddRegionsExtended(TreeNodeCollection tree, FileModel aFile)
        {
            int         endRegion = 0;
            int         index     = 0;
            MemberModel region    = null;
            MemberList  regions   = aFile.Regions;
            int         count     = regions.Count;

            for (index = 0; index < count; ++index)
            {
                region = regions[index];
                MemberTreeNode node = new MemberTreeNode(region, ICON_PACKAGE);
                tree.Add(node);

                endRegion = (index + 1 < count) ? regions[index + 1].LineFrom : int.MaxValue;

                MemberList regionMembers = new MemberList();
                foreach (MemberModel import in aFile.Imports)
                {
                    if (import.LineFrom >= region.LineFrom &&
                        import.LineTo <= endRegion)
                    {
                        regionMembers.Add(import);
                    }
                }

                foreach (MemberModel fileMember in aFile.Members)
                {
                    if (fileMember.LineFrom >= region.LineFrom &&
                        fileMember.LineTo <= endRegion)
                    {
                        regionMembers.Add(fileMember);
                    }
                }

                foreach (ClassModel cls in aFile.Classes)
                {
                    if (cls.LineFrom <= region.LineFrom)
                    {
                        foreach (MemberModel clsMember in cls.Members)
                        {
                            if (clsMember.LineFrom >= region.LineFrom &&
                                clsMember.LineTo <= endRegion)
                            {
                                regionMembers.Add(clsMember);
                            }
                        }
                    }
                    else if (cls.LineFrom >= region.LineFrom &&
                             cls.LineTo <= endRegion)
                    {
                        regionMembers.Add(cls);
                    }
                }
                AddMembers(node.Nodes, regionMembers);
            }
        }
Example #3
0
        /// <summary>
        /// Add tree nodes following the user defined members presentation
        /// </summary>
        /// <param name="tree"></param>
        /// <param name="members"></param>
        static public void AddMembers(TreeNodeCollection tree, MemberList members)
        {
            TreeNodeCollection nodes      = tree;
            MemberTreeNode     node       = null;
            MemberModel        prevMember = null;
            int img;

            foreach (MemberModel member in members)
            {
                if ((member.Flags & FlagType.Constant) > 0)
                {
                    img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_CONST :
                          ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_CONST : ICON_CONST;
                    node = new MemberTreeNode(member, img);
                    nodes.Add(node);
                }
                else if ((member.Flags & FlagType.Variable) > 0)
                {
                    img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_VAR :
                          ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_VAR : ICON_VAR;
                    node = new MemberTreeNode(member, img);
                    nodes.Add(node);
                }
                else if ((member.Flags & (FlagType.Getter | FlagType.Setter)) > 0)
                {
                    if (prevMember != null && prevMember.Name == member.Name) // "collapse" properties
                    {
                        continue;
                    }
                    img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_PROPERTY :
                          ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_PROPERTY : ICON_PROPERTY;
                    node = new MemberTreeNode(member, img);
                    nodes.Add(node);
                }
                else if ((member.Flags & FlagType.Function) > 0)
                {
                    img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_FUNCTION :
                          ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_FUNCTION : ICON_FUNCTION;
                    node = new MemberTreeNode(member, img);
                    nodes.Add(node);
                }
                prevMember = member;
            }
        }
Example #4
0
        private void AddRegionsExtended(TreeNodeCollection tree, FileModel aFile)
        {
            int endRegion = 0;
            int index = 0;
            MemberModel region = null;
            MemberList regions = aFile.Regions;
            int count = regions.Count;
            for (index = 0; index < count; ++index)
            {
                region = regions[index];
                MemberTreeNode node = new MemberTreeNode(region, ICON_PACKAGE);
                tree.Add(node);

                endRegion = (index + 1 < count) ? regions[index + 1].LineFrom : int.MaxValue;

                MemberList regionMembers = new MemberList();
                foreach (MemberModel import in aFile.Imports)
                {
                    if (import.LineFrom >= region.LineFrom &&
                        import.LineTo <= endRegion)
                    {
                        regionMembers.Add(import);
                    }
                }

                foreach (MemberModel fileMember in aFile.Members)
                {
                    if (fileMember.LineFrom >= region.LineFrom &&
                        fileMember.LineTo <= endRegion)
                    {
                        regionMembers.Add(fileMember);
                    }
                }

                foreach (ClassModel cls in aFile.Classes)
                {
                    if (cls.LineFrom <= region.LineFrom)
                    {
                        foreach (MemberModel clsMember in cls.Members)
                        {
                            if (clsMember.LineFrom >= region.LineFrom &&
                                clsMember.LineTo <= endRegion)
                            {
                                regionMembers.Add(clsMember);
                            }
                        }
                    }
                    else if (cls.LineFrom >= region.LineFrom &&
                             cls.LineTo <= endRegion)
                    {
                        regionMembers.Add(cls);
                    }
                }
                AddMembers(node.Nodes, regionMembers);
            }
        }
Example #5
0
 private void AddRegions(TreeNodeCollection tree, MemberList members)
 {
     foreach (MemberModel member in members)
     {
         MemberTreeNode node = new MemberTreeNode(member, ICON_PACKAGE);
         tree.Add(node);
     }
 }
Example #6
0
        public static void AddMembersGrouped(TreeNodeCollection tree, MemberList members)
        {
            FlagType[] typePriority = new FlagType[] { FlagType.Constructor, FlagType.Function, FlagType.Getter | FlagType.Setter, FlagType.Variable, FlagType.Constant };
            Visibility[] visibilityPriority = new Visibility[] { Visibility.Internal, Visibility.Private, Visibility.Protected, Visibility.Public };
            Dictionary<FlagType, List<MemberModel>> typeGroups = new Dictionary<FlagType, List<MemberModel>>();

            FlagType type;
            List<MemberModel> groupList;
            MemberTreeNode node = null;
            foreach (MemberModel member in members)
            {
                if (node != null && node.Text == member.ToString())
                    continue;

                // member type
                if ((member.Flags & FlagType.Constant) > 0)
                    type = FlagType.Constant;
                else if ((member.Flags & FlagType.Variable) > 0)
                    type = FlagType.Variable;
                else if ((member.Flags & (FlagType.Getter | FlagType.Setter)) > 0)
                    type = (FlagType.Getter | FlagType.Setter);
                else if ((member.Flags & FlagType.Constructor) > 0)
                    type = FlagType.Constructor;
                else type = FlagType.Function;

                // group
                if (!typeGroups.ContainsKey(type))
                {
                    groupList = new List<MemberModel>();
                    typeGroups.Add(type, groupList);
                }
                else groupList = typeGroups[type];

                groupList.Add(member);
            }

            MemberModel prevMember = null;
            for (int i = 0; i < typePriority.Length; i++)
            {
                if (typeGroups.ContainsKey(typePriority[i]))
                {
                    groupList = typeGroups[typePriority[i]];
                    if (groupList.Count == 0)
                        continue;
                    groupList.Sort();

                    TreeNode groupNode = new TreeNode(typePriority[i].ToString(), ICON_FOLDER_CLOSED, ICON_FOLDER_OPEN);
                    int img;
                    node = null;
                    foreach (MemberModel member in groupList)
                    {
                        if (prevMember != null && prevMember.Name == member.Name)
                            continue;
                        img = GetIcon(member.Flags, member.Access);
                        node = new MemberTreeNode(member, img);
                        groupNode.Nodes.Add(node);
                    }
                    if (typePriority[i] != FlagType.Constructor) groupNode.Expand();
                    tree.Add(groupNode);
                }
            }
        }
Example #7
0
 /// <summary>
 /// Add tree nodes following the user defined members presentation
 /// </summary>
 /// <param name="tree"></param>
 /// <param name="members"></param>
 public static void AddMembers(TreeNodeCollection tree, MemberList members)
 {
     TreeNodeCollection nodes = tree;
     MemberTreeNode node = null;
     MemberModel prevMember = null;
     int img;
     foreach (MemberModel member in members)
     {
         img = GetIcon(member.Flags, member.Access);
         node = new MemberTreeNode(member, img);
         nodes.Add(node);
         prevMember = member;
     }
 }
Example #8
0
        static public void AddMembersGrouped(TreeNodeCollection tree, MemberList members)
        {
            FlagType[] typePriority = new FlagType[] { FlagType.Constructor, FlagType.Function, FlagType.Getter | FlagType.Setter, FlagType.Variable, FlagType.Constant };
            Dictionary<FlagType, List<MemberModel>> typeGroups = new Dictionary<FlagType, List<MemberModel>>();

            FlagType type;
            List<MemberModel> groupList;
            MemberTreeNode node = null;
            foreach (MemberModel member in members)
            {
                // member type
                if ((member.Flags & FlagType.Constant) > 0)
                    type = FlagType.Constant;
                else if ((member.Flags & FlagType.Variable) > 0)
                    type = FlagType.Variable;
                else if ((member.Flags & (FlagType.Getter | FlagType.Setter)) > 0)
                    type = (FlagType.Getter | FlagType.Setter);
                else if ((member.Flags & FlagType.Constructor) > 0)
                    type = FlagType.Constructor;
                else type = FlagType.Function;

                // group
                if (!typeGroups.TryGetValue(type, out groupList))
                {
                    groupList = new List<MemberModel>();
                    typeGroups.Add(type, groupList);
                }

                groupList.Add(member);
            }

            for (int i = 0, count = typePriority.Length; i < count; i++)
            {
                type = typePriority[i];
                if (typeGroups.TryGetValue(type, out groupList))
                {
                    if (groupList.Count == 0)
                        continue;
                    groupList.Sort();

                    TreeNode groupNode = new TreeNode(type.ToString(), ICON_FOLDER_CLOSED, ICON_FOLDER_OPEN);
                    int img;
                    foreach (MemberModel member in groupList)
                    {
                        img = GetIcon(member.Flags, member.Access);
                        node = new MemberTreeNode(member, img);
                        groupNode.Nodes.Add(node);
                    }
                    if (type != FlagType.Constructor) groupNode.Expand();
                    tree.Add(groupNode);
                }
            }
        }
Example #9
0
 /// <summary>
 /// Add tree nodes following the user defined members presentation
 /// </summary>
 /// <param name="tree"></param>
 /// <param name="members"></param>
 static public void AddMembers(TreeNodeCollection tree, MemberList members)
 {
     TreeNodeCollection nodes = tree;
     MemberTreeNode node = null;
     MemberModel prevMember = null;
     int img;
     foreach (MemberModel member in members)
     {
         if ((member.Flags & FlagType.Constant) > 0)
         {
             img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_CONST :
                 ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_CONST : ICON_CONST;
             node = new MemberTreeNode(member, img);
             nodes.Add(node);
         }
         else if ((member.Flags & FlagType.Variable) > 0)
         {
             img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_VAR :
                 ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_VAR : ICON_VAR;
             node = new MemberTreeNode(member, img);
             nodes.Add(node);
         }
         else if ((member.Flags & (FlagType.Getter | FlagType.Setter)) > 0)
         {
             if (prevMember != null && prevMember.Name == member.Name) // "collapse" properties
                 continue;
             img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_PROPERTY :
                 ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_PROPERTY : ICON_PROPERTY;
             node = new MemberTreeNode(member, img);
             nodes.Add(node);
         }
         else if ((member.Flags & FlagType.Function) > 0)
         {
             img = ((member.Access & Visibility.Private) > 0) ? ICON_PRIVATE_FUNCTION :
                 ((member.Access & Visibility.Protected) > 0) ? ICON_PROTECTED_FUNCTION : ICON_FUNCTION;
             node = new MemberTreeNode(member, img);
             nodes.Add(node);
         }
         prevMember = member;
     }
 }
Example #10
0
        static public void AddMembersGrouped(TreeNodeCollection tree, MemberList members)
        {
            FlagType[]   typePriority       = new FlagType[] { FlagType.Constructor, FlagType.Function, FlagType.Getter | FlagType.Setter, FlagType.Variable, FlagType.Constant };
            Visibility[] visibilityPriority = new Visibility[] { Visibility.Internal, Visibility.Private, Visibility.Protected, Visibility.Public };
            Dictionary <FlagType, List <MemberModel> > typeGroups = new Dictionary <FlagType, List <MemberModel> >();

            FlagType           type;
            List <MemberModel> groupList;
            MemberTreeNode     node = null;

            foreach (MemberModel member in members)
            {
                if (node != null && node.Text == member.ToString())
                {
                    continue;
                }

                // member type
                if ((member.Flags & FlagType.Constant) > 0)
                {
                    type = FlagType.Constant;
                }
                else if ((member.Flags & FlagType.Variable) > 0)
                {
                    type = FlagType.Variable;
                }
                else if ((member.Flags & (FlagType.Getter | FlagType.Setter)) > 0)
                {
                    type = (FlagType.Getter | FlagType.Setter);
                }
                else if ((member.Flags & FlagType.Constructor) > 0)
                {
                    type = FlagType.Constructor;
                }
                else
                {
                    type = FlagType.Function;
                }

                // group
                if (!typeGroups.ContainsKey(type))
                {
                    groupList = new List <MemberModel>();
                    typeGroups.Add(type, groupList);
                }
                else
                {
                    groupList = typeGroups[type];
                }

                groupList.Add(member);
            }

            MemberModel prevMember = null;

            for (int i = 0; i < typePriority.Length; i++)
            {
                if (typeGroups.ContainsKey(typePriority[i]))
                {
                    groupList = typeGroups[typePriority[i]];
                    if (groupList.Count == 0)
                    {
                        continue;
                    }
                    groupList.Sort();

                    TreeNode groupNode = new TreeNode(typePriority[i].ToString(), ICON_FOLDER_CLOSED, ICON_FOLDER_OPEN);
                    int      img;
                    node = null;
                    foreach (MemberModel member in groupList)
                    {
                        if (prevMember != null && prevMember.Name == member.Name)
                        {
                            continue;
                        }
                        img  = GetMemberIcon(member.Flags, member.Access);
                        node = new MemberTreeNode(member, img);
                        groupNode.Nodes.Add(node);
                    }
                    if (typePriority[i] != FlagType.Constructor)
                    {
                        groupNode.Expand();
                    }
                    tree.Add(groupNode);
                }
            }
        }