Пример #1
0
        public FormEditSubnet(TreeNode treeNode, ModeForm modeForm)
        {
            InitializeComponent();
            this.modeForm = modeForm;
            switch (this.modeForm)
            {
            case ModeForm.Edit:
            {
                this.lcTreeNodeSubnet        = (LCTreeNodeSubnet)treeNode;
                this.Text                    = "Сеть : " + this.lcTreeNodeSubnet.Text;
                this.textBoxNameSubnet.Text  = this.lcTreeNodeSubnet.Text;
                this.textBoxIPSubnet.Text    = this.lcTreeNodeSubnet.IPSubnet;
                this.textBoxMaskSubnet.Text  = this.lcTreeNodeSubnet.MaskSubnet;
                this.textBoxDescription.Text = this.lcTreeNodeSubnet.Description;
                this.buttonAddSubnet.Text    = "Сохранить";
                break;
            }

            case ModeForm.New:
            {
                this.lcTreeNodeGroup        = (LCTreeNodeGroup)treeNode;
                this.textBoxNameSubnet.Text = "Новая сеть";
                break;
            }
            }
        }
Пример #2
0
        private void ButtonSaveGroup_Click(object sender, EventArgs e)
        {
            if (this.textBoxNameGroup.Text != "")
            {
                switch (this.modeForm)
                {
                case ModeForm.New:
                {
                    this.lcTreeNode = this.lcTreeNodeGroup.AddGroup(this.textBoxNameGroup.Text, this.textBoxDescription.Text);
                    break;
                }

                case ModeForm.Edit:
                {
                    this.lcTreeNodeGroup.Text        = this.textBoxNameGroup.Text;
                    this.lcTreeNodeGroup.Description = this.textBoxDescription.Text;
                    this.lcTreeNodeGroup.UpdateLC();
                    break;
                }
                }
                this.Close();
            }
            else
            {
                this.labelErrorMessage.Text = "Не задано имя группы";
            }
        }
Пример #3
0
 /// <summary>
 /// Поиск группы по имени
 /// </summary>
 /// <param name="nameGroup">Имя сети</param>
 /// <returns>Возвращает найденую группу</returns>
 public LCTreeNodeGroup FindGroup(string nameGroup)
 {
     foreach (LCTreeNode node in AllLCTreeNode(treeView.Nodes))
     {
         if (node.LCObjectType == LCObjectType.Group)
         {
             LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)node;
             if (lcGroup.Text == nameGroup)
             {
                 this.WriteListBox("Найдена группа с именем: " + lcGroup.Text + ".");
                 return(lcGroup);
             }
         }
     }
     return(null);
 }
Пример #4
0
        /// <summary>
        /// Метод добавления дочерней группы
        /// </summary>
        /// <param name="nameGroup">Имя группы</param>
        /// <param name="description">Описание группы</param>
        /// <returns>Возвращает созданную группу</returns>
        public LCTreeNodeGroup AddGroup(string nameGroup, string description)
        {
            // создаем новый узел Group
            LCTreeNodeGroup lcTreeNodeGroup = new LCTreeNodeGroup
            {
                Text             = nameGroup,
                Description      = description,
                ContextMenuStrip = LCTreeNode.groupContextMemuStrip,
                ImageIndex       = 2
            };

            lcTreeNodeGroup.ToolTipText += nameGroup;
            lcTreeNodeGroup.ToolTipText += "\n" + description;
            this.Nodes.Add(lcTreeNodeGroup);
            this.WriteListBoxOperation("Добавлена группа : " + nameGroup);
            return(lcTreeNodeGroup);
        }
Пример #5
0
        /// <summary>
        /// Метод создания модели DOM на основе текста
        /// </summary>
        public void CreateDOMXML(string fileName)
        {
            this.fileData = fileName;
            treeView.Nodes.Clear();
            XDocument xmlDocument;

            if (File.Exists(this.fileData))
            {
                //Создаём резевную копию файла с данными о компьютерах
                //Формируем путь в файлу резервной копии
                string backupFileName = Application.LocalUserAppDataPath;
                backupFileName += "\\Backup\\LCDirectory.xml." + DateTime.Today.ToShortDateString() + ".backup";
                //Проверяем была ли уже сделана резервная копия сегодня
                if (!(File.Exists(backupFileName)))
                {
                    //формируем пусь к паке backup
                    string backupDirectory = Application.LocalUserAppDataPath + "\\Backup";
                    //Создаём папку backup
                    Directory.CreateDirectory(backupDirectory);
                    //Создаём резервную копию
                    File.Copy(this.fileData, backupFileName);
                }
                try
                {
                    // Загружаем XML файл
                    xmlDocument = XDocument.Load(this.fileData);
                }
                catch (Exception e)
                {
                    this.WriteListBox("Ошибка загрузки файла: " + e.Message);
                    LCTreeNodeGroup lcTreeRootError = new LCTreeNodeGroup
                    {
                        Text = "!",
                        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        // Здесь возможна загрузка специальной иконки обозначающей сбой
                        ImageIndex = 1
                    };
                    treeView.Nodes.Add(lcTreeRootError);
                    //lcTreeRootError.ContextMenuStrip = this.contextMenuStripLCRoot;
                    this.WriteListBox("Справочник не загружен. Закройте приложение и проверьте корректность файла!");
                    this.correctLoad = false;
                    return;
                }
            }
            else
            {
                this.WriteListBox("Файл справочника не найден!");
                xmlDocument = new XDocument(
                    new XDeclaration("1.0", "windows-1251", "yes"),
                    new XElement("Root"));
                this.WriteListBox("Создан новый, пустой справочник.");
            }
            // Получаем корневой узел элемента
            XElement xnodDE = xmlDocument.Root;
            // Здесь надо правильно настроить этот узел
            LCTreeNodeGroup lcTreeRoot = new LCTreeNodeGroup
            {
                Name             = "Root",
                Text             = ".",
                Description      = "Корневой узел справочника.",
                ContextMenuStrip = LCTreeNode.rootContextMenuStrip,
                ImageIndex       = 1
            };

            // И добавить его в дерево
            treeView.Nodes.Add(lcTreeRoot);
            treeView.BeginUpdate();
            //рекурсивный обход дерева
            AddChildrenDOMXML(xnodDE, lcTreeRoot);
            // Сортируем объекты в дереве
            treeView.Sort();
            treeView.EndUpdate();
            this.WriteListBox("Справочник успешно загружен.");
            // открываем дочерние узлы узла root
            lcTreeRoot.Expand();
        }
Пример #6
0
        private XElement SaveChildren(LCTreeNode item, XElement current)
        {
            LCTreeNode xnodWorking;

            switch (item.LCObjectType)
            {
            case LCObjectType.Group:
            {
                if (item.Name != "Root")
                {
                    LCTreeNodeGroup lcGroup  = (LCTreeNodeGroup)item;
                    XElement        xElement = new XElement("Group",
                                                            new XAttribute("NameGroup", lcGroup.Text),
                                                            new XAttribute("Description", lcGroup.Description));
                    current = xElement;
                }
            }
            break;

            case LCObjectType.Host:
            {
                LCTreeNodeHost lcHost   = (LCTreeNodeHost)item;
                XElement       xElement = new XElement("Host",
                                                       new XAttribute("TypeHost", lcHost.TypeHost.ToString()),
                                                       new XAttribute("NameHost", lcHost.Text),
                                                       new XAttribute("IP", lcHost.IP),
                                                       new XAttribute("Barcode", lcHost.Barcode),
                                                       new XAttribute("Login", lcHost.Login),
                                                       new XAttribute("Password", lcHost.Password),
                                                       new XAttribute("Description", lcHost.Description));;
                current = xElement;
            }
            break;

            case LCObjectType.NoList:
            {
                LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)item;
                XElement         xElement = new XElement("NoList",
                                                         new XAttribute("NameGroup", lcNoList.Text),
                                                         new XAttribute("Description", lcNoList.Description));
                current = xElement;
            }
            break;

            case LCObjectType.SubNet:
            {
                LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)item;
                XElement         xElement = new XElement("Subnet",
                                                         new XAttribute("NameSubnet", lcSubnet.Text),
                                                         new XAttribute("IPSubnet", lcSubnet.IPSubnet),
                                                         new XAttribute("MaskSubnet", lcSubnet.MaskSubnet),
                                                         new XAttribute("Description", lcSubnet.Description));
                current = xElement;
            }
            break;
            }
            //рекурсивный перебор всех дочерних узлов
            if (item.Nodes.Count > 0)
            {
                xnodWorking = (LCTreeNode)item.FirstNode;
                while (xnodWorking != null)
                {
                    current.Add(SaveChildren(xnodWorking, current));
                    xnodWorking = (LCTreeNode)xnodWorking.NextNode;
                }
            }
            return(current);
        }
Пример #7
0
        /// <summary>
        /// Метод добавления дочерних узлов в дерево
        /// </summary>
        /// <param name="xnod">XML элемент</param>
        /// <param name="newNode">Компонент TreeNode в котором создаются узлы</param>
        private void AddChildrenDOMXML(XElement xnod, TreeNode newNode)
        {
            if (xnod.NodeType == System.Xml.XmlNodeType.Element)
            {
                switch (xnod.Name.ToString())
                {
                case "Group":
                {
                    LCTreeNodeGroup lcTreeNodeGroup = new LCTreeNodeGroup
                    {
                        Text             = xnod.Attribute("NameGroup").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.groupContextMemuStrip,
                        ImageIndex       = 2
                    };
                    newNode.Nodes.Add(lcTreeNodeGroup);
                    lcTreeNodeGroup.UpdateLC();
                    newNode = lcTreeNodeGroup;
                }
                break;

                case "NoList":
                {
                    LCTreeNodeNoList lcTreeNodeNoList = new LCTreeNodeNoList
                    {
                        Text             = xnod.Attribute("NameGroup").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.noListContextMenuStrip,
                        ImageIndex       = 2
                    };
                    lcTreeNodeNoList.ToolTipText += lcTreeNodeNoList.Text;
                    lcTreeNodeNoList.ToolTipText += "\n" + lcTreeNodeNoList.Description;
                    newNode.Nodes.Add(lcTreeNodeNoList);
                    newNode = lcTreeNodeNoList;
                }
                break;

                case "Host":
                {
                    LCTreeNodeHost lcTreeNodeHost = new LCTreeNodeHost
                    {
                        Text             = xnod.Attribute("NameHost").Value,
                        IP               = xnod.Attribute("IP").Value,
                        Barcode          = xnod.Attribute("Barcode").Value,
                        Login            = xnod.Attribute("Login").Value,
                        Password         = xnod.Attribute("Password").Value,
                        Description      = xnod.Attribute("Description").Value,
                        TypeHost         = (LCTypeHost)Enum.Parse(typeof(LCTypeHost), xnod.Attribute("TypeHost").Value),
                        ContextMenuStrip = LCTreeNode.computerContextMenuStrip
                    };
                    newNode.Nodes.Add(lcTreeNodeHost);
                    lcTreeNodeHost.UpdateLC();
                    return;
                }

                case "Subnet":
                {
                    LCTreeNodeSubnet lcTreeNodeSubnet = new LCTreeNodeSubnet
                    {
                        Text             = xnod.Attribute("NameSubnet").Value,
                        IPSubnet         = xnod.Attribute("IPSubnet").Value,
                        MaskSubnet       = xnod.Attribute("MaskSubnet").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.subnetContextMenuStrip,
                        ImageIndex       = 5
                    };
                    newNode.Nodes.Add(lcTreeNodeSubnet);
                    lcTreeNodeSubnet.UpdateLC();
                    newNode = lcTreeNodeSubnet;
                }
                break;

                case "Root":
                {
                    //MessageBox.Show("yes");
                    //newNode.ImageIndex = 1;
                    //newNode.Text = mapAttributes.Item(1).Value;
                }
                break;
                }
                foreach (XElement element in xnod.Elements())
                {
                    AddChildrenDOMXML(element, newNode);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Событие удаления объекта LC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteLCTreeNode(object sender, EventArgs e)
        {
            LCTreeNode lcTreeNode = (LCTreeNode)this.treeViewObject.SelectedNode;
            string     tempStr    = lcTreeNode.Text;

            // Проверяем есть ли у этого узла дочерние объекты
            if (lcTreeNode.Nodes.Count > 0)
            {
                // надо перебрать все узлы
                if (MessageBox.Show("Объект имеет дочерние узлы! Все равно удалить?", "Удаление", MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    // Здесь нужен код для удаления из таблиц объектов, которые являются дочерними по отношению к удаляемому объекту

                    // Удаляем текущий
                    //lcTreeNode.Remove();
                    MessageBox.Show("Пока не реализовано удаление элементов с дочерними объектами!");
                    // Сообщаем об удалении
                    this.WriteListBox("Группа " + tempStr + " и её дочерние объекты удалены.");
                }
            }
            else
            {
                if (MessageBox.Show("Вы дейстительно хотите удалить этот объект ?", "Удаление", MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    switch (lcTreeNode.LCObjectType)
                    {
                    case LCObjectType.Host:
                    {
                        LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode;
                        lcHost.RemoveLC();
                        tempStr = "Компьютер: " + tempStr + " удалён.";
                        // Сообщаем об удалении
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.SubNet:
                    {
                        LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode;
                        lcSubnet.RemoveLC();
                        tempStr = "Сеть: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.Group:
                    {
                        LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode;
                        lcGroup.RemoveLC();
                        tempStr = "Группа: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.NoList:
                    {
                        LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)lcTreeNode;
                        lcNoList.Remove();
                        tempStr = "Группа: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }
                    }
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Метод открытия узла дерева.
        /// </summary>
        /// <param name="treeNode">Открываемый узел.</param>
        private void OpenLCTreeNode(TreeNode treeNode)
        {
            if (treeNode == null)
            {
                return;
            }

            LCTreeNode lcTreeNode = (LCTreeNode)treeNode;

            switch (lcTreeNode.LCObjectType)
            {
            case LCObjectType.Host:
            {
                this.tabControlObject.SelectedTab = this.tabPageHosts;
                LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode;
                // Делаем активным список хостов
                this.listViewHosts.Focus();
                foreach (ListViewItem curilv in this.listViewHosts.Items)
                {
                    if (curilv.Tag == lcHost)
                    {
                        // Выделяем нужный элемент в списке
                        curilv.Selected = true;
                        return;
                    }
                }
                // определяем родительскую группу элемента
                LCTreeNode lcNode = (LCTreeNode)lcHost.Parent;
                // Пока сделано так, в будущем предполагаются что ПК состоят только в сетях. Кроме группы <Не в списке>
                if (lcNode.LCObjectType == LCObjectType.SubNet)
                {
                    ListViewGroup lvg = null;
                    foreach (ListViewGroup curGroup in this.listViewHosts.Groups)
                    {
                        if (curGroup.Tag == lcNode)
                        {
                            // Группа существует
                            lvg = curGroup;
                            break;
                        }
                    }
                    if (lvg == null)
                    {
                        // Такой группы еще нет, надо её создать
                        lvg = new ListViewGroup(lcNode.Text);
                    }
                    lvg.Tag = lcNode;
                    this.listViewHosts.Groups.Add(lvg);
                    ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr }, lvg)
                    {
                        Tag = lcHost
                    };
                    lcHost.Tag = lvi;
                    this.listViewHosts.Items.Add(lvi);
                    lcHost.UpdateLC();
                    lvi.Selected = true;
                }
                else
                {
                    ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr })
                    {
                        Tag = lcHost
                    };
                    lcHost.Tag = lvi;
                    this.listViewHosts.Items.Add(lvi);
                    lcHost.UpdateLC();
                    lvi.Selected = true;
                }
                break;
            }

            case LCObjectType.SubNet:
            {
                this.tabControlObject.SelectedTab = this.tabPageSubnets;
                this.listViewSubnets.Focus();
                LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode;
                foreach (ListViewItem cutilv in this.listViewSubnets.Items)
                {
                    if (cutilv.Tag == lcSubnet)
                    {
                        cutilv.Selected = true;
                        return;
                    }
                }
                ListViewItem lvi = new ListViewItem(new string[] { lcSubnet.Text, lcSubnet.IPSubnet,
                                                                   lcSubnet.MaskSubnet, lcSubnet.ParentGroup, lcSubnet.DescriptionStr })
                {
                    Tag = lcSubnet
                };
                lcSubnet.Tag = lvi;
                this.listViewSubnets.Items.Add(lvi);
                lvi.Selected = true;
                break;
            }

            case LCObjectType.Group:
            {
                this.tabControlObject.SelectedTab = this.tabPageGroups;
                this.listViewGroups.Focus();
                LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode;
                foreach (ListViewItem curilv in this.listViewGroups.Items)
                {
                    if (curilv.Tag == lcGroup)
                    {
                        curilv.Selected = true;
                        return;
                    }
                }
                ListViewItem lvi = new ListViewItem(new string[] { lcGroup.Text, lcGroup.ParentGroup, lcGroup.DescriptionStr })
                {
                    Tag = lcGroup
                };
                lcGroup.Tag = lvi;
                this.listViewGroups.Items.Add(lvi);
                lvi.Selected = true;
                break;
            }
            }
        }