/// <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; } } } }
/// <summary> /// Метод изъятия объекта из буфера /// </summary> /// <returns>Объект который находился в буфере</returns> public LCTreeNode OutBuffer() { LCTreeNode lcTreeNode = this.lcTreeNode; this.lcTreeNode = null; return(lcTreeNode); }
/// <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 + " помещен в буфер"); }
/// <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); } }
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); } }
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); }
/// <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; } } } } }
/// <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; } } }
/// <summary> /// Метод вставки объекта в буфер /// </summary> /// <param name="lcTreeNode">Объект помещаемый в буфер</param> public void InBuffer(LCTreeNode lcTreeNode) { this.lcTreeNode = (LCTreeNode)lcTreeNode; }