Index: Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.Designer.cs =================================================================== diff -u -r12e24723e1f64cd49d6666c62f5f2d62eda10e1c -r7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9 --- Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.Designer.cs (.../MessageWindow.Designer.cs) (revision 12e24723e1f64cd49d6666c62f5f2d62eda10e1c) +++ Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.Designer.cs (.../MessageWindow.Designer.cs) (revision 7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9) @@ -201,7 +201,6 @@ this.messagesDataGridView.ReadOnly = true; this.messagesDataGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; this.messagesDataGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.messagesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.messagesDataGridView.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.MessagesDataGridViewCellMouseDoubleClick); this.messagesDataGridView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MessagesDataGridViewKeyDown); // Index: Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.cs =================================================================== diff -u -re2e8bfbe41dfec5a057efe0cf31a37c24da784d5 -r7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9 --- Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.cs (.../MessageWindow.cs) (revision e2e8bfbe41dfec5a057efe0cf31a37c24da784d5) +++ Core/Gui/src/Core.Gui/Forms/Log/MessageWindow.cs (.../MessageWindow.cs) (revision 7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9) @@ -188,7 +188,7 @@ if (messagesDataGridView.Rows.Count > 0) { - messagesDataGridView.CurrentCell = messagesDataGridView.Rows[0].Cells[0]; + messagesDataGridView.CurrentCell = messagesDataGridView.Rows[0].Cells[2]; } } Index: Core/Gui/test/Core.Gui.Test/Forms/Log/MessageWindowTest.cs =================================================================== diff -u -re2e8bfbe41dfec5a057efe0cf31a37c24da784d5 -r7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9 --- Core/Gui/test/Core.Gui.Test/Forms/Log/MessageWindowTest.cs (.../MessageWindowTest.cs) (revision e2e8bfbe41dfec5a057efe0cf31a37c24da784d5) +++ Core/Gui/test/Core.Gui.Test/Forms/Log/MessageWindowTest.cs (.../MessageWindowTest.cs) (revision 7fa3fa42ab4bbdbc457f1ea3eccecc2fe0d4e0a9) @@ -79,7 +79,7 @@ } [Test] - public void GivenMessageWindow_WhenMultipleMessagesAdded_ThenFirstColumnOnFirstRowIsSelected() + public void GivenMessageWindow_WhenMultipleMessagesAdded_ThenThirdColumnOnFirstRowIsSelected() { // Given using (var form = new Form()) @@ -89,23 +89,23 @@ form.Show(); var dataGridView = (DataGridView) new ControlTester("messagesDataGridView").TheObject; - Level topLeftCellValue = Level.Info; + const string selectedCellValue = "DetailedInfoMessage"; // Precondition Assert.IsNull(dataGridView.CurrentCell); // When messageWindow.AddMessage(Level.Warn, new DateTime(), "DetailedWarnMessage"); messageWindow.AddMessage(Level.Error, new DateTime(), "DetailedErrorMessage"); - messageWindow.AddMessage(topLeftCellValue, new DateTime(), "DetailedInfoMessage"); + messageWindow.AddMessage(Level.Info, new DateTime(), selectedCellValue); messageWindow.Refresh(); // Then Assert.IsNotNull(dataGridView.CurrentCell); - DataGridViewCell topLeftCell = dataGridView.Rows[0].Cells[0]; - Assert.AreSame(topLeftCell, dataGridView.CurrentCell); - Assert.AreEqual(topLeftCellValue.ToString(), dataGridView.CurrentCell.Value); + DataGridViewCell selectedCell = dataGridView.Rows[0].Cells[2]; + Assert.AreSame(selectedCell, dataGridView.CurrentCell); + Assert.AreEqual(selectedCellValue, dataGridView.CurrentCell.Value); } } @@ -419,9 +419,9 @@ } [Test] - public void ButtonCopy_Click_CopiesContentToClipboard() + public void GivenMessageWindowWithCellSelected_WhenClickButtonCopy_ThenCopiesContentToClipboard() { - // Setup + // Given using (var form = new Form()) using (new ClipboardConfig()) using (MessageWindow messageWindow = ShowMessageWindow(null)) @@ -432,12 +432,40 @@ messageWindow.AddMessage(Level.Warn, new DateTime(), "message"); messageWindow.Refresh(); + // When var button = new ToolStripButtonTester("buttonCopy"); + button.Click(); - // Call + // Then + IDataObject actualDataObject = ClipboardProvider.Clipboard.GetDataObject(); + Assert.IsTrue(actualDataObject != null && actualDataObject.GetDataPresent(DataFormats.Text)); + var actualContent = (string) actualDataObject.GetData(DataFormats.Text); + Assert.AreEqual("message", actualContent); + } + } + + [Test] + public void GivenMessageWindowWithRowSelected_WhenClickButtonCopy_ThenCopiesContentToClipboard() + { + // Given + using (var form = new Form()) + using (new ClipboardConfig()) + using (MessageWindow messageWindow = ShowMessageWindow(null)) + { + form.Controls.Add(messageWindow); + form.Show(); + + messageWindow.AddMessage(Level.Warn, new DateTime(), "message"); + messageWindow.Refresh(); + + var dataGridView = (DataGridView) new ControlTester("messagesDataGridView").TheObject; + dataGridView.Rows[0].Selected = true; + + // When + var button = new ToolStripButtonTester("buttonCopy"); button.Click(); - // Assert + // Then IDataObject actualDataObject = ClipboardProvider.Clipboard.GetDataObject(); Assert.IsTrue(actualDataObject != null && actualDataObject.GetDataPresent(DataFormats.Text)); var actualContent = (string) actualDataObject.GetData(DataFormats.Text); @@ -446,9 +474,9 @@ } [Test] - public void ButtonCopy_MessagesSelectedOnKeyDownEvent_CopiesContentToClipboard() + public void GivenMessageWindowWithCellSelected_WhenCtrlCPressed_ThenCopiesContentToClipboard() { - // Setup + // Given using (var form = new Form()) using (new ClipboardConfig()) using (MessageWindow messageWindow = ShowMessageWindow(null)) @@ -462,17 +490,48 @@ var gridView = new ControlTester("messagesDataGridView"); const Keys keyData = Keys.Control | Keys.C; - // Call + // When gridView.FireEvent("KeyDown", new KeyEventArgs(keyData)); - // Assert + // Then IDataObject actualDataObject = ClipboardProvider.Clipboard.GetDataObject(); Assert.IsTrue(actualDataObject != null && actualDataObject.GetDataPresent(DataFormats.Text)); var actualContent = (string) actualDataObject.GetData(DataFormats.Text); + Assert.AreEqual("message", actualContent); + } + } + + [Test] + public void GivenMessageWindowWithRowSelected_WhenCtrlCPressed_ThenCopiesContentToClipboard() + { + // Given + using (var form = new Form()) + using (new ClipboardConfig()) + using (MessageWindow messageWindow = ShowMessageWindow(null)) + { + form.Controls.Add(messageWindow); + form.Show(); + + messageWindow.AddMessage(Level.Warn, new DateTime(), "message"); + messageWindow.Refresh(); + + var dataGridViewControl = new ControlTester("messagesDataGridView"); + var dataGridView = (DataGridView) dataGridViewControl.TheObject; + dataGridView.Rows[0].Selected = true; + + const Keys keyData = Keys.Control | Keys.C; + + // When + dataGridViewControl.FireEvent("KeyDown", new KeyEventArgs(keyData)); + + // Then + IDataObject actualDataObject = ClipboardProvider.Clipboard.GetDataObject(); + Assert.IsTrue(actualDataObject != null && actualDataObject.GetDataPresent(DataFormats.Text)); + var actualContent = (string) actualDataObject.GetData(DataFormats.Text); Assert.AreEqual("WARN\tmessage\t00:00:00", actualContent); } } - + [Test] public void ButtonShowInfo_ButtonUnchecked_FiltersInfoMessages() {