예제 #1
0
파일: FormMain.cs 프로젝트: Mutexman/LC
        /// <summary>
        /// Метод вывода форм редактирования объектов справочника
        /// </summary>
        /// <param name="tn">Редактируемый узел</param>
        private void EditLCTreeNode(LCTreeNode tn)
        {
            if (tn != null)
            {
                switch (tn.LCObjectType)
                {
                case LCObjectType.Host:
                {
                    //FormEditHost formEditComputer = new FormEditHost(this.treeViewObject.SelectedNode);
                    FormEditHost formEditComputer = new FormEditHost(tn);
                    formEditComputer.ShowDialog();
                    break;
                }

                case LCObjectType.Group:
                {
                    //FormEditGroup formEditGroup = new FormEditGroup(this.treeViewObject.SelectedNode, ModeForm.Edit);
                    FormEditGroup formEditGroup = new FormEditGroup(tn, ModeForm.Edit);
                    formEditGroup.ShowDialog();
                    break;
                }

                case LCObjectType.SubNet:
                {
                    //FormEditSubnet formEditSubnet = new FormEditSubnet(this.treeViewObject.SelectedNode, ModeForm.Edit);
                    FormEditSubnet formEditSubnet = new FormEditSubnet(tn, ModeForm.Edit);
                    formEditSubnet.ShowDialog();
                    break;
                }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Метод изъятия объекта из буфера
        /// </summary>
        /// <returns>Объект который находился в буфере</returns>
        public LCTreeNode OutBuffer()
        {
            LCTreeNode lcTreeNode = this.lcTreeNode;

            this.lcTreeNode = null;
            return(lcTreeNode);
        }
예제 #3
0
파일: FormMain.cs 프로젝트: Mutexman/LC
        /// <summary>
        /// Событие вырезания объекта в буфер обмена
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CutLCTreeNode(object sender, EventArgs e)
        {
            LCTreeNode lc = (LCTreeNode)this.treeViewObject.SelectedNode;

            this.buffer.InBuffer(lc);
            lc.Remove();
            this.WriteListBox("Объект " + lc.Text + " помещен в буфер");
        }
예제 #4
0
 /// <summary>
 /// Метод сохранения XML-справочника
 /// </summary>
 public void SaveDomXML()
 {
     // Сохранение справочника надо выполнять только в случае если он вообще загружался
     if (this.correctLoad)
     {
         // Проверяем имя файла, возможно создаётся новый справочник
         if (this.fileData == "")
         {
             this.fileData = Application.LocalUserAppDataPath + "\\LCDirectory.xml";
         }
         XElement   root   = new XElement("Root");
         LCTreeNode lcNode = (LCTreeNode)treeView.Nodes[0];
         XDocument  xDoc   = new XDocument(this.SaveChildren(lcNode, root));
         xDoc.Save(this.fileData);
     }
 }
예제 #5
0
파일: FormMain.cs 프로젝트: Mutexman/LC
 private void FormMain_Load(object sender, EventArgs e)
 {
     // Выводим в заголовок номер версии программы
     this.Text += " " + Application.ProductVersion;
     // Сохраняем размеры и положение окна
     this.Size     = Settings.Default.WindowSize;
     this.Location = Settings.Default.WindowLocation;
     // Считываем из настроек данные о пользователе
     FormMain.User     = Properties.Settings.Default.User;
     FormMain.Password = Properties.Settings.Default.Password;
     // Выводим имя пользователя в заголовок формы
     this.Text += " Пользователь: " + FormMain.User;
     LCTreeNode.SetListBoxOperation(this.listBoxOperation);
     LCTreeNode.rootContextMenuStrip     = this.contextMenuStripLCRoot;
     LCTreeNode.groupContextMemuStrip    = this.contextMenuStripLCGroup;
     LCTreeNode.computerContextMenuStrip = this.contextMenuStripLCComputer;
     LCTreeNode.subnetContextMenuStrip   = this.contextMenuStripLCSubnet;
     LCTreeNode.noListContextMenuStrip   = this.contextMenuStripNoList;
     LCTreeNode.StatusLabel                = this.toolStripStatusLabelMain;
     CommandToolStripButton.StatusLabel    = this.toolStripStatusLabelMain;
     CommandToolStripButton.listBoxMessage = this.listBoxOperation;
     CommandToolStripButton.tabControl     = this.tabControlObject;
     LCDirectory.treeView             = this.treeViewObject;
     LCDirectory.listBox              = this.listBoxOperation;
     LCDirectory.toolStripStatusLabel = this.toolStripStatusLabelMain;
     this.lCDirectory = new LCDirectory();
     this.lCDirectory.CreateDOMXML(this.fileData);
     // Восстанавливаем открытые вкладки
     this.OpenSavedPages();
     // Открываем компьютер ip адрес которого был передан в параметрах командной строки
     if (Environment.GetCommandLineArgs().Length >= 4)
     {
         this.toolStripTextBoxIP.Text = Environment.GetCommandLineArgs()[3];
         this.ToolStripButtonFind_Click(null, null);
     }
 }
예제 #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
파일: FormMain.cs 프로젝트: Mutexman/LC
        /// <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;
                    }
                    }
                }
            }
        }
예제 #8
0
파일: FormMain.cs 프로젝트: Mutexman/LC
        /// <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;
            }
            }
        }
예제 #9
0
 /// <summary>
 /// Метод вставки объекта в буфер
 /// </summary>
 /// <param name="lcTreeNode">Объект помещаемый в буфер</param>
 public void InBuffer(LCTreeNode lcTreeNode)
 {
     this.lcTreeNode = (LCTreeNode)lcTreeNode;
 }