Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs =================================================================== diff -u -rf6bf9303525ff26d55b2e4e8a54c2911e50e882c -r870f4fe29ebcc33e2ca7eda3c51fb404051b855f --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision f6bf9303525ff26d55b2e4e8a54c2911e50e882c) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 870f4fe29ebcc33e2ca7eda3c51fb404051b855f) @@ -405,7 +405,12 @@ return; } - string message = Resources.TreeViewControl_Are_you_sure_you_want_to_remove_the_selected_item; + TreeNodeInfo treeNodeInfo = TryGetTreeNodeInfoForData(treeNode.Tag); + + string message = treeNodeInfo.BeforeNodeRemoveText != null + ? treeNodeInfo.BeforeNodeRemoveText(treeNode.Tag) + : Resources.TreeViewControl_Are_you_sure_you_want_to_remove_the_selected_item; + if (MessageBox.Show(message, BaseResources.Confirm, MessageBoxButtons.OKCancel) != DialogResult.OK) { return; Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs =================================================================== diff -u -r40afad2717b927cdf8e892a33a7a624ecb223174 -r870f4fe29ebcc33e2ca7eda3c51fb404051b855f --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 40afad2717b927cdf8e892a33a7a624ecb223174) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 870f4fe29ebcc33e2ca7eda3c51fb404051b855f) @@ -393,7 +393,7 @@ [Test] [TestCase(true)] [TestCase(false)] - public void CanRemoveNodeForData_DataSet_ReturnsValueOfCanRename(bool expected) + public void CanRemoveNodeForData_DataSet_ReturnsValueOfCanRemove(bool expected) { // Setup using (var treeViewControl = new TreeViewControl()) @@ -464,6 +464,94 @@ [Test] [Apartment(ApartmentState.STA)] + public void GivenTreeNodeInfoWithoutBeforeNodeRemoveText_WhenRemoving_ThenDefaultConfirmationMessageShown() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var treeNodeInfo = new TreeNodeInfo + { + TagType = typeof(object), + CanRemove = (o, p) => true + }; + treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); + var dataObject = new object(); + treeViewControl.Data = dataObject; + + try + { + WindowsFormsTestHelper.Show(treeViewControl); + + string messageBoxText = null; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + + messageBoxText = helper.Text; + + helper.ClickOk(); + }; + + // When + treeViewControl.TryRemoveNodeForData(dataObject); + + // Then + Assert.AreEqual("Weet u zeker dat u het geselecteerde element wilt verwijderen?", messageBoxText); + } + finally + { + WindowsFormsTestHelper.CloseAll(); + } + } + } + + [Test] + [Apartment(ApartmentState.STA)] + public void GivenTreeNodeInfoWithBeforeNodeRemoveText_WhenRemoving_ThenConfirmationMessageShown() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var confirmationMessage = "Are you sure?"; + var treeNodeInfo = new TreeNodeInfo + { + TagType = typeof(object), + CanRemove = (o, p) => true, + BeforeNodeRemoveText = o => confirmationMessage + }; + treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); + var dataObject = new object(); + treeViewControl.Data = dataObject; + + try + { + WindowsFormsTestHelper.Show(treeViewControl); + + string messageBoxText = null; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + + messageBoxText = helper.Text; + + helper.ClickOk(); + }; + + // When + treeViewControl.TryRemoveNodeForData(dataObject); + + // Then + Assert.AreEqual(confirmationMessage, messageBoxText); + } + finally + { + WindowsFormsTestHelper.CloseAll(); + } + } + } + + [Test] + [Apartment(ApartmentState.STA)] public void TryRemoveNodeForData_Removable_OnNodeRemovedAndDataDeletedCalled() { // Setup