Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs =================================================================== diff -u -r7e6c0b97836346830f6d1d4ffea8df72695710cc -r0e931e2849e1a8d8fbda67f0ec6b1b799dd39e79 --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 7e6c0b97836346830f6d1d4ffea8df72695710cc) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 0e931e2849e1a8d8fbda67f0ec6b1b799dd39e79) @@ -421,7 +421,12 @@ private void TryRemoveChildNodes(TreeNode treeNode) { - string message = Resources.TreeViewControl_Are_you_sure_you_want_to_remove_children_of_the_selected_item; + TreeNodeInfo treeNodeInfo = TryGetTreeNodeInfoForData(treeNode.Tag); + + string message = treeNodeInfo.OnRemoveChildNodesConfirmationText != null + ? treeNodeInfo.OnRemoveChildNodesConfirmationText(treeNode.Tag) + : Resources.TreeViewControl_Are_you_sure_you_want_to_remove_children_of_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 -rcacde52d47830942771f68244def25e4046794e1 -r0e931e2849e1a8d8fbda67f0ec6b1b799dd39e79 --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision cacde52d47830942771f68244def25e4046794e1) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 0e931e2849e1a8d8fbda67f0ec6b1b799dd39e79) @@ -512,7 +512,7 @@ // Given using (var treeViewControl = new TreeViewControl()) { - var confirmationMessage = "Are you sure?"; + const string confirmationMessage = "Are you sure?"; var treeNodeInfo = new TreeNodeInfo { TagType = typeof(object), @@ -574,13 +574,9 @@ { WindowsFormsTestHelper.Show(treeViewControl); - string messageBoxText = null; DialogBoxHandler = (name, wnd) => { var helper = new MessageBoxTester(wnd); - - messageBoxText = helper.Text; - helper.ClickOk(); }; @@ -590,8 +586,6 @@ // Assert Assert.AreEqual(1, onNodeRemovedHit); Assert.AreEqual(1, onDataDeletedHit); - - Assert.AreEqual("Weet u zeker dat u het geselecteerde element wilt verwijderen?", messageBoxText); } finally { @@ -631,13 +625,9 @@ { WindowsFormsTestHelper.Show(treeViewControl); - string messageBoxText = null; DialogBoxHandler = (name, wnd) => { var helper = new MessageBoxTester(wnd); - - messageBoxText = helper.Text; - helper.ClickCancel(); }; @@ -646,8 +636,6 @@ // Assert Assert.AreEqual(0, onNodeRemovedHit); - - Assert.AreEqual("Weet u zeker dat u de subonderdelen van het geselecteerde element wilt verwijderen?", messageBoxText); } finally { @@ -690,13 +678,9 @@ { WindowsFormsTestHelper.Show(treeViewControl); - string messageBoxText = null; DialogBoxHandler = (name, wnd) => { var helper = new MessageBoxTester(wnd); - - messageBoxText = helper.Text; - helper.ClickOk(); }; @@ -706,7 +690,57 @@ // Assert Assert.AreEqual(1, onNodeRemovedHit); Assert.AreEqual(1, onDataDeletedHit); + } + finally + { + WindowsFormsTestHelper.CloseAll(); + } + } + } + [Test] + [Apartment(ApartmentState.STA)] + public void GivenTreeNodeInfoWithoutOnRemoveChildNodesConfirmationText_WhenRemoving_ThenDefaultConfirmationMessageShown() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var treeNodeInfo = new TreeNodeInfo + { + TagType = typeof(object), + ChildNodeObjects = o => new object[] + { + string.Empty + } + }; + var childTreeNodeInfo = new TreeNodeInfo + { + TagType = typeof(string), + CanRemove = (o, p) => true + }; + treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); + treeViewControl.RegisterTreeNodeInfo(childTreeNodeInfo); + 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.TryRemoveChildNodesOfData(dataObject); + + // Then Assert.AreEqual("Weet u zeker dat u de subonderdelen van het geselecteerde element wilt verwijderen?", messageBoxText); } finally @@ -718,6 +752,60 @@ [Test] [Apartment(ApartmentState.STA)] + public void GivenTreeNodeInfoWithOnRemoveChildNodesConfirmationText_WhenRemoving_ThenConfirmationMessageShown() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + const string confirmationMessage = "Are you sure?"; + var treeNodeInfo = new TreeNodeInfo + { + TagType = typeof(object), + ChildNodeObjects = o => new object[] + { + string.Empty + }, + OnRemoveChildNodesConfirmationText = o => confirmationMessage + }; + var childTreeNodeInfo = new TreeNodeInfo + { + TagType = typeof(string), + CanRemove = (o, p) => true + }; + treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); + treeViewControl.RegisterTreeNodeInfo(childTreeNodeInfo); + 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.TryRemoveChildNodesOfData(dataObject); + + // Then + Assert.AreEqual(confirmationMessage, messageBoxText); + } + finally + { + WindowsFormsTestHelper.CloseAll(); + } + } + } + + [Test] + [Apartment(ApartmentState.STA)] public void CanRemoveChildNodesOfData_NoChildren_ReturnsFalse() { // Setup