Beispiel #1
0
        /// <summary>
        /// Fires when Background Color Clicked
        /// </summary>
        /// <param name="sender">UI Color Menu</param>
        /// <param name="e">Event arguments</param>
        private void BackgroundColorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Open Color Dialog box for user to select a new color
            ColorDialog colorDialog = new ColorDialog();

            // Store a list of commands for undo / redo
            List <SpreadsheetEngine.ICommand> restoreBGColorCommands = new List <SpreadsheetEngine.ICommand>();

            // When the user selects a new color
            if (colorDialog.ShowDialog() == DialogResult.OK)
            {
                // Iterate through each of the selected cells
                foreach (DataGridViewCell cell in dataGridView.SelectedCells)
                {
                    // Covert to spreadsheetCell location
                    CptS321.SpreadsheetCell spreadsheetCell = spreadsheet.GetCell((uint)cell.RowIndex, (uint)cell.ColumnIndex);
                    uint oldColor = spreadsheetCell.BGColor;
                    uint newColor = (uint)colorDialog.Color.ToArgb();
                    spreadsheetCell.BGColor = newColor;

                    // Create the undo command
                    SpreadsheetEngine.RestoreBGColorCommand restoreColor = new SpreadsheetEngine.RestoreBGColorCommand(spreadsheetCell, oldColor, newColor);
                    restoreBGColorCommands.Add(restoreColor);
                }

                // Add command list to the stack
                spreadsheet.AddUndo(restoreBGColorCommands);
                this.undoToolStripMenuItem.Enabled = true;

                // Check redo stack, clear if not already empty
                if (!this.spreadsheet.RedoStackIsEmpty())
                {
                    this.spreadsheet.ClearRedoStack();
                }
            }

            // Update button labels and enabled state
            UpdateToolStripMenu();
        }