Example #1
0
        /// <summary>
        /// 查找主机应该位于的索引位置
        /// </summary>
        /// <param name="host">主机</param>
        /// <param name="parentNode">父节点</param>
        /// <returns></returns>
        public int FindIndexForHost(Host host, TreeNode parentNode)
        {
            TreeNodeCollection tnc = this.Nodes;

            if (parentNode != null)
            {
                tnc = parentNode.Nodes;
            }

            ListConfig cfg = Env.ClientConfig.HostListViewConfig;

            IComparer <Host> c1 = cfg.FirstOrder == ListConfig.SortOrder.IP ? ipComparer : (cfg.FirstOrder == ListConfig.SortOrder.Name ? nameComparer : statusComparer);
            IComparer <Host> c2 = cfg.SecondOrder == ListConfig.SortOrder.IP ? ipComparer : (cfg.SecondOrder == ListConfig.SortOrder.Name ? nameComparer : statusComparer);

            int i = 0;

            while (i < tnc.Count && (c1.Compare(host, (tnc[i] as HostNode).Host) > 0 || c2.Compare(host, (tnc[i] as HostNode).Host) > 0))
            {
                i++;
            }

            return(i);
        }
Example #2
0
        /// <summary>
        /// 查找主机应该位于的分组节点,如果没有找到,则返回空值
        /// </summary>
        /// <param name="host">要添加的节点</param>
        /// <returns>返回主机应该位于的分组节点,如果没有找到,则返回空值</returns>
        public TreeNode FindCollectionNodeForHost(Host host)
        {
            ListConfig cfg        = Env.ClientConfig.HostListViewConfig;
            TreeNode   parentNode = null;

            //查找第一级别分组
            if (cfg.FirstGroupType == ListConfig.GroupType.None)
            {
                return(null);
            }
            foreach (TreeNode node in this.Nodes)
            {
                HostCollectionBase b = node as HostCollectionBase;
                if (b != null && b.IsHostInThisGroup(host))
                {
                    parentNode = node;
                    break;
                }
            }
            //如果没有找到,则创建
            if (parentNode == null)
            {
                switch (cfg.FirstGroupType)
                {
                case ListConfig.GroupType.UserDefine:
                    parentNode = new HostUserDefineCollectionNode()
                    {
                        GroupLevel = 0, GroupName = HostUserDefineCollectionNode.GetHostGroupName(host)
                    };
                    break;

                case ListConfig.GroupType.IPHeader:
                    parentNode = new HostIPCollectionNode()
                    {
                        GroupLevel = 0, IPHeader = host.HostSub.IPHeader
                    };
                    break;

                case ListConfig.GroupType.UserGroup:
                    parentNode = new HostGroupCollectionNode()
                    {
                        GroupLevel = 0, GroupName = host.GroupName
                    };
                    break;
                }
                this.Nodes.Add(parentNode);
            }

            //查找第二级节点
            if (cfg.SecondGroupType == ListConfig.GroupType.None)
            {
                return(parentNode);
            }
            TreeNode subNode = null;

            foreach (TreeNode node in parentNode.Nodes)
            {
                HostCollectionBase b = node as HostCollectionBase;
                if (b != null && b.IsHostInThisGroup(host))
                {
                    subNode = node;
                    break;
                }
            }
            //如果没有找到,则创建
            if (subNode == null)
            {
                switch (cfg.SecondGroupType)
                {
                case ListConfig.GroupType.UserDefine:
                    subNode = new HostUserDefineCollectionNode()
                    {
                        GroupLevel = 1, GroupName = HostUserDefineCollectionNode.GetHostGroupName(host)
                    };
                    break;

                case ListConfig.GroupType.IPHeader:
                    subNode = new HostIPCollectionNode()
                    {
                        GroupLevel = 1, IPHeader = host.HostSub.IPHeader
                    };
                    break;

                case ListConfig.GroupType.UserGroup:
                    subNode = new HostGroupCollectionNode()
                    {
                        GroupLevel = 1, GroupName = host.GroupName
                    };
                    break;
                }
                parentNode.Nodes.Add(subNode);
            }

            return(subNode);
        }