void dgridSelectedModules_DoubleClick(object sender, EventArgs e) { if ((laba[dgridSelectedModules.SelectedRows[0].Index].Module as IModuleSettings) != null) { SettingsForm sf = new SettingsForm((laba[dgridSelectedModules.SelectedRows[0].Index].Module as IModuleSettings).GetSettingsControl(laba[dgridSelectedModules.SelectedRows[0].Index].Settings)); sf.ShowDialog(this); if (sf.Successful) { сохранитьToolStripButton.Enabled = notSaved = true; UndoRedoAction ura = new UndoRedoAction(UndoRedoActionKind.ChangeSettings, new object[] { dgridSelectedModules.SelectedRows[0].Index, laba[dgridSelectedModules.SelectedRows[0].Index].Settings }); undoStack.Push(ura); if (redoStack.Count > 0 && ura == redoStack.Peek()) redoStack.Pop(); else { btnRedo.Enabled = false; redoStack.Clear(); } btnUndo.Enabled = true; laba[dgridSelectedModules.SelectedRows[0].Index].Settings = sf.settings; } } }
private void btnUndo_Click(object sender, EventArgs e) { dgridModules.Focus(); if (undoStack.Count > 0) { UndoRedoAction action = undoStack.Pop(); switch (action.UndoRedoActionKind) { case UndoRedoActionKind.Add: laba.RemoveTask(dgridSelectedModules.Rows.Count - 1); dgridSelectedModules.Rows.RemoveAt(dgridSelectedModules.Rows.Count - 1); break; case UndoRedoActionKind.ChangeSettings: object settings = laba[(int)action.ActionData[0]].Settings; laba[(int)action.ActionData[0]].Settings = action.ActionData[1]; action = new UndoRedoAction(UndoRedoActionKind.ChangeSettings, new object[] { (int)action.ActionData[0], settings }); break; case UndoRedoActionKind.MoveDown: laba.Swap((int)action.ActionData[0], (int)action.ActionData[0] + 1); int index = (int)action.ActionData[0]; dgridSelectedModules.Rows.Insert(index + 2, new object[] { dgridSelectedModules.Rows[index].Cells[0].Value, dgridSelectedModules.Rows[index].Cells[1].Value, dgridSelectedModules.Rows[index].Cells[2].Value, dgridSelectedModules.Rows[index].Cells[3].Value, dgridSelectedModules.Rows[index].Cells[4].Value, dgridSelectedModules.Rows[index].Cells[5].Value, dgridSelectedModules.Rows[index].Cells[6].Value, dgridSelectedModules.Rows[index].Cells[7].Value, dgridSelectedModules.Rows[index].Cells[8].Value }); dgridSelectedModules.Rows.RemoveAt(index); dgridSelectedModules.Rows[index].Selected = true; break; case UndoRedoActionKind.MoveUp: laba.Swap((int)action.ActionData[0], (int)action.ActionData[0] - 1); int index1 = (int)action.ActionData[0] - 1; dgridSelectedModules.Rows.Insert(index1 + 2, new object[] { dgridSelectedModules.Rows[index1].Cells[0].Value, dgridSelectedModules.Rows[index1].Cells[1].Value, dgridSelectedModules.Rows[index1].Cells[2].Value, dgridSelectedModules.Rows[index1].Cells[3].Value, dgridSelectedModules.Rows[index1].Cells[4].Value, dgridSelectedModules.Rows[index1].Cells[5].Value, dgridSelectedModules.Rows[index1].Cells[6].Value, dgridSelectedModules.Rows[index1].Cells[7].Value, dgridSelectedModules.Rows[index1].Cells[8].Value }); dgridSelectedModules.Rows.RemoveAt(index1); dgridSelectedModules.Rows[index1 + 1].Selected = true; break; case UndoRedoActionKind.Remove: int index2 = (int)action.ActionData[1]; int index3 = (int)action.ActionData[0]; dgridSelectedModules.Rows.Insert(index2, new object[] { dgridModules.Rows[index3].Cells[0].Value, dgridModules.Rows[index3].Cells[1].Value, dgridModules.Rows[index3].Cells[2].Value, dgridModules.Rows[index3].Cells[3].Value, dgridModules.Rows[index3].Cells[4].Value, dgridModules.Rows[index3].Cells[5].Value, dgridModules.Rows[index3].Cells[6].Value, dgridModules.Rows[index3].Cells[7].Value, dgridModules.Rows[index3].Cells[8].Value }); laba.InsertTask(index2, ModulesArray[(int)dgridModules.Rows[index3].Cells[6].Value]); laba[index2].Settings = action.ActionData[2]; break; default: throw new NotImplementedException(); } redoStack.Push(action); if (undoStack.Count == 0) btnUndo.Enabled = false; btnRedo.Enabled = true; } }
private void btnMoveUp_Click(object sender, EventArgs e) { if (dgridSelectedModules.SelectedRows.Count > 0) foreach (DataGridViewRow row in dgridSelectedModules.SelectedRows) if (row.Index >= 1) { сохранитьToolStripButton.Enabled = notSaved = true; UndoRedoAction ura = new UndoRedoAction(UndoRedoActionKind.MoveUp, new object[] { row.Index }); undoStack.Push(ura); if (redoStack.Count > 0 && ura == redoStack.Peek()) redoStack.Pop(); else { btnRedo.Enabled = false; redoStack.Clear(); } btnUndo.Enabled = true; laba.Swap(row.Index, row.Index - 1); int index = row.Index - 1; dgridSelectedModules.Rows.Insert(index, new object[] { row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value, row.Cells[3].Value, row.Cells[4].Value, row.Cells[5].Value, row.Cells[6].Value, row.Cells[7].Value, row.Cells[8].Value }); dgridSelectedModules.Rows.Remove(row); dgridSelectedModules.Rows[index].Selected = true; } }
private void btnRemove_Click(object sender, EventArgs e) { if (dgridSelectedModules.SelectedRows.Count > 0) foreach (DataGridViewRow row in dgridSelectedModules.SelectedRows) { сохранитьToolStripButton.Enabled = notSaved = true; UndoRedoAction ura = new UndoRedoAction(UndoRedoActionKind.Remove, new object[] { (int)row.Cells[6].Value, row.Index, laba[row.Index].Settings }); undoStack.Push(ura); if (redoStack.Count > 0 && ura == redoStack.Peek()) redoStack.Pop(); else { btnRedo.Enabled = false; redoStack.Clear(); } btnUndo.Enabled = true; laba.RemoveTask(row.Index); dgridSelectedModules.Rows.Remove(row); } }
private void btnAdd_Click(object sender, EventArgs e) { if (dgridModules.SelectedRows.Count > 0) foreach (DataGridViewRow row in dgridModules.SelectedRows) { if (row.Index >= 0) сохранитьToolStripButton.Enabled = notSaved = true; UndoRedoAction ura = new UndoRedoAction(UndoRedoActionKind.Add, new object[] { (int)row.Cells[6].Value, dgridSelectedModules.Rows.Count, null }); undoStack.Push(ura); if (redoStack.Count > 0 && ura == redoStack.Peek()) redoStack.Pop(); else { btnRedo.Enabled = false; redoStack.Clear(); } btnUndo.Enabled = true; dgridSelectedModules.Rows.Add(new object[] { row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value, row.Cells[3].Value, row.Cells[4].Value, row.Cells[5].Value, row.Cells[6].Value, row.Cells[7].Value, row.Cells[8].Value }); laba.AddTask(ModulesArray[(int)row.Cells[6].Value]); } }