/// <summary> /// Запоминание состояния папки при сворачивании /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void treeViewOperationType_AfterCollapse(object sender, TreeViewEventArgs e) { COperationType operationType = _operationTypeWorker.GetByGeneralData(e.Node.Text); operationType.NodeFolderStated = NodeFolderStated.Closed; _operationTypeWorker.Update(operationType); }
/// <summary> /// Отобразить все вложенные узлы для данного узла /// </summary> /// <param name="treeNodes">Узелы на списке узлов</param> /// <param name="operationTypeId">Id типа операции, который находится в этом узле</param> private void FillNodes(TreeNodeCollection treeNodes, int operationTypeId) { COperationType[] operationTypes = _operationTypeWorker.GetChilds(operationTypeId); foreach (COperationType operationType in operationTypes) { treeNodes.Add(operationType.Name); } foreach (TreeNode node in treeNodes) { if (IsSelectedOperationTypesContainOperationType(node.Text)) { node.Checked = true; } COperationType operationType = _operationTypeWorker.GetByGeneralData(node.Text); if (operationType.Type == NodeType.Folder) { node.NodeFont = new Font(treeViewOperationType.Font, FontStyle.Bold); node.ImageIndex = 1; node.SelectedImageIndex = 1; FillNodes(node.Nodes, operationType.Id); if (operationType.NodeFolderStated == NodeFolderStated.Opened) { node.Expand(); } } } }
/// <summary> /// Открыть форму для добавления нового типа операции /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void buttonAdd_Click(object sender, EventArgs e) { if (treeViewOperationType.SelectedNode == null) { new OperationTypeViewForm(_workersKeeper, null).ShowDialog(); } else { COperationType operationType = _operationTypeWorker.GetByGeneralData(treeViewOperationType.SelectedNode.Text); if (operationType.Type == NodeType.Folder) { new OperationTypeViewForm(_workersKeeper, null, treeViewOperationType.SelectedNode.Text).ShowDialog(); } else if (treeViewOperationType.SelectedNode.Level > 0) { new OperationTypeViewForm(_workersKeeper, null, treeViewOperationType.SelectedNode.Parent.Text).ShowDialog(); } else { new OperationTypeViewForm(_workersKeeper, null).ShowDialog(); } } ShowOperationType(); }
public OperationTypeRemoveForm(CWorkersKeeper workersKeeper, COperationType operationTypeInfo) { InitializeComponent(); _operationTypeInfo = operationTypeInfo; _operationTypeWorker = workersKeeper.OperationTypeWorker; _operationWorker = workersKeeper.OperationWorker; _operationsWithCurrentOperationTypeCnt = _operationWorker.GetCountContainedOperationType(_operationTypeInfo.Name); }
/// <summary> /// Обработка двойного нажатия на узле /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void treeViewOperationType_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { treeViewOperationType.SelectedNode = e.Node; COperationType operationType = _operationTypeWorker.GetByGeneralData(e.Node.Text); if (operationType.Type == NodeType.Type && e.Button == MouseButtons.Left) { buttonEdit_Click(sender, e); } }
/// <summary> /// Выделение узла при нажатии на правую кнопку мыши и показ контекстного меню для папки /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void treeViewOperationType_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { treeViewOperationType.SelectedNode = e.Node; COperationType operationType = _operationTypeWorker.GetByGeneralData(e.Node.Text); if (operationType.Type == NodeType.Folder && e.Button == MouseButtons.Right) { contextMenuStrip1.Show(Cursor.Position.X, Cursor.Position.Y); } }
/// <summary> /// Запрет выделения папок /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void treeViewOperationType_BeforeCheck(object sender, TreeViewCancelEventArgs e) { COperationType operationType = _operationTypeWorker.GetByGeneralData(e.Node.Text); if (operationType == null || operationType.Type == NodeType.Folder) { MessageBox.Show("Выделение папки невозможно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); e.Cancel = true; } }
/// <summary> /// Добавить новый тип операции к списку типов операций /// </summary> /// <param name="operationTypeInfo">Информация о типе операции</param> public void Add(COperationType operationTypeInfo) { if (GetByGeneralData(operationTypeInfo.Name) != null) { throw new Exception("Тип операции с таким названием уже существует"); } var newOperationTypeInfo = new COperationType(operationTypeInfo) { Id = GetNewID(_operationTypeList.ToArray()) }; _operationTypeList.Add(newOperationTypeInfo); Save(); }
/// <summary> /// Загрузить список типов операций /// </summary> private void Load() { _operationTypeList = new List <COperationType>(); string allDataStr = CDatabaseEngine.UnpackText(_operationTypePath); // Получаем набор объектов string[] objectsStr = allDataStr.Split(new[] { ObjSplitStr }, StringSplitOptions.RemoveEmptyEntries); // Проходим по всем объектам foreach (string objectStr in objectsStr) { // Для каждого объекта получаем список значений string[] datasStr = objectStr.Split(new[] { DataSplitStr }, StringSplitOptions.RemoveEmptyEntries); var operationTypeInfo = new COperationType(); foreach (string dataStr in datasStr) { string[] keyValue = dataStr.Split(new[] { '=' }, 2); switch (keyValue[0]) { case "Id": operationTypeInfo.Id = Convert.ToInt32(keyValue[1]); break; case "Name": operationTypeInfo.Name = keyValue[1]; break; case "IdParent": operationTypeInfo.IdParent = Convert.ToInt32(keyValue[1]); break; case "Type": operationTypeInfo.Type = (NodeType)Enum.Parse(typeof(NodeType), keyValue[1]); break; case "NodeFolderStated": operationTypeInfo.NodeFolderStated = (NodeFolderStated)Enum.Parse(typeof(NodeFolderStated), keyValue[1]); break; } } _operationTypeList.Add(operationTypeInfo); } }
/// <summary> /// Обновить информацию о типе операции /// </summary> /// <param name="operationTypeInfo">Информация о типе операции</param> public void Update(COperationType operationTypeInfo) { COperationType tempOperationType = GetByGeneralData(operationTypeInfo.Name); if (tempOperationType != null && tempOperationType.Id != operationTypeInfo.Id) { throw new Exception("Тип операции с таким названием уже существует"); } int n = 0; while (_operationTypeList[n].Id != operationTypeInfo.Id) { n++; } _operationTypeList[n] = new COperationType(operationTypeInfo); Save(); }
/// <summary> /// Сохранение изменений /// </summary> /// <param name="sender">Объект, пославший сообщение</param> /// <param name="e">Объект, содержащий данные посланного сообщения</param> private void buttonOk_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBoxOperationTypeName.Text)) { MessageBox.Show("Поля, отмеченные звёздочкой, обязательны для заполнения", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } try { string oldOperationTypeName = _operationTypeInfo.Name; _operationTypeInfo.Name = textBoxOperationTypeName.Text; _operationTypeInfo.Type = comboBoxNodeType.Text == "Папка" ? NodeType.Folder : NodeType.Type; if (comboBoxParentNodeName.Text == "Корневая папка") { _operationTypeInfo.IdParent = -1; } else { COperationType operationType = _operationTypeWorker.GetByGeneralData(comboBoxParentNodeName.Text); _operationTypeInfo.IdParent = operationType.Id; } if (_operationTypeInfo.Id == 0) { _operationTypeWorker.Add(_operationTypeInfo); } else { _operationTypeWorker.Update(_operationTypeInfo); _operationWorker.ChangeOperationType(oldOperationTypeName, _operationTypeInfo.Name); } _isFormClosingByButton = true; Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public OperationTypeViewForm(CWorkersKeeper workersKeeper, COperationType operationTypeInfo, string defaultParentFolderName) { InitializeComponent(); comboBoxNodeType.SelectedIndex = 0; _operationTypeWorker = workersKeeper.OperationTypeWorker; _operationWorker = workersKeeper.OperationWorker; if (operationTypeInfo == null) { _operationTypeInfo = new COperationType(); Text = "Добавление нового типа операции"; AddAllParentTypesToComboBox(string.Empty); comboBoxParentNodeName.Text = defaultParentFolderName; } else { _operationTypeInfo = new COperationType(operationTypeInfo); Text = "Редактирование типа операции"; textBoxOperationTypeName.Text = _operationTypeInfo.Name; AddAllParentTypesToComboBox(_operationTypeInfo.Name); if (_operationTypeInfo.Type == NodeType.Folder) { comboBoxNodeType.SelectedIndex = 1; } comboBoxNodeType.Enabled = false; if (_operationTypeInfo.IdParent != -1) { COperationType operationType = _operationTypeWorker.GetById(_operationTypeInfo.IdParent); comboBoxParentNodeName.Text = operationType.Name; } } }
public OperationTypeViewForm(CWorkersKeeper workersKeeper, COperationType operationTypeInfo) : this(workersKeeper, operationTypeInfo, string.Empty) { }