/// <summary> /// Обработчик события нажатия "Редактировать задачу" из контекстного меню. /// </summary> /// <remarks>Копирует TaskUI и NetPoint и отображает форму с подпиской на сохранение.</remarks> /// <param name="sender">Объект события</param> /// <param name="e">Аргумент события</param> private void EditTask(object sender, EventArgs e) { TaskUI sen = (TaskUI)sender; editnow = sen; editnow.Task.PointType = sen.Task.PointType; NetPoint task = sen.Task; EditTask edit = new EditTask(task); edit.SavingChanges += EditPoint; edit.FormClosing += uxPlay; this.Enabled = false; edit.Show(); StartPaintTrace(); }
/// <summary> /// Обработчик нажатия мышью по TaskUI /// </summary> /// <param name="sender">Объект события</param> /// <param name="e">Аргумент события</param> private void ClickPoint(object sender, MouseEventArgs e) { if (status == MapStat.none) { editnow = (TaskUI)sender; mousecorrection = e.Location; drag = true; if (e.Button == MouseButtons.Right) { foreach (ToolStripItem ts in contextPainter.Items) { ts.Enabled = false; } contextPainter.Items[2].Enabled = true; contextPainter.Items[1].Enabled = true; contextPainter.Items[3].Enabled = true; if (editnow.Task.Connections.Count > 0) { contextPainter.Items[5].Enabled = true; } if (points.Count > 1) { contextPainter.Items[4].Enabled = true; } if (points.Count > 0) { contextPainter.Items[6].Enabled = true; } contextPainter.Show(Cursor.Position); } } if (status == MapStat.delete) { editnow = (TaskUI)sender; Cursor = Cursors.Arrow; status = MapStat.none; List <NetPoint> np = Tasks; np.Remove(editnow.Task); Tasks = np; way = null; TasksPanel.Controls.Remove(editnow); List <NetPoint> update = new List <NetPoint>(); foreach (NetPoint nep in Tasks) { NetPoint updated = nep; if (updated.Connections.Contains(editnow.Task)) { updated.Connections.Remove(editnow.Task); } update.Add(updated); } Tasks = update; StartPaintTrace(); } if (status == MapStat.edit) { Cursor = Cursors.Default; status = MapStat.none; TaskUI sen = (TaskUI)sender; editnow = sen; editnow.Task.PointType = sen.Task.PointType; NetPoint task = sen.Task; EditTask edit = new EditTask(task); edit.SavingChanges += EditPoint; edit.FormClosing += uxPlay; this.Enabled = false; edit.Show(); StartPaintTrace(); } if (status == MapStat.linking) { if (editnow == null && ALink == null) { ALink = (TaskUI)sender; MessageBox.Show("Выберите задачу, с которой необходимо образовать связь", "Подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else if (editnow == null && ALink != null) { editnow = (TaskUI)sender; } way = null; NetPoint linked = ((TaskUI)sender).Task; if (((TaskUI)sender) != ALink) { ALink.Task.Connections.Add(linked); } else if (ALink.Task.Connections.Contains(linked)) { ALink.Task.Connections.Remove(linked); ALink.Task.Connections.Add(linked); MessageBox.Show("С данной задачей уже установлена связь", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } Cursor = Cursors.Default; status = MapStat.none; UpdateTable(); StartPaintTrace(); } if (status == MapStat.unlinking) { if (ALink == null && editnow == null) { ALink = (TaskUI)sender; MessageBox.Show("Выберите задачу, с которой необходимо разорвать связь", "Подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else if (ALink != null && editnow == null) { editnow = (TaskUI)sender; } way = null; NetPoint unlink = ((TaskUI)sender).Task; if (((TaskUI)sender) != ALink && ALink.Task.Connections.Contains(unlink)) { ALink.Task.Connections.Remove(unlink); List <NetPoint> nplist = new List <NetPoint>(); foreach (NetPoint np in points) { nplist.Add(np); if (np.ID == ALink.Task.ID) { nplist.Add(ALink.Task); break; } } } else { MessageBox.Show("С данным объектом не установлена связь", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } Cursor = Cursors.Default; status = MapStat.none; UpdateTable(); StartPaintTrace(); } }