Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs =================================================================== diff -u -r7e6c0b97836346830f6d1d4ffea8df72695710cc -raf56cce642fc73fea7b1dcc27c88adc05f7e06b5 --- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs (.../TreeNodeInfo.cs) (revision 7e6c0b97836346830f6d1d4ffea8df72695710cc) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs (.../TreeNodeInfo.cs) (revision af56cce642fc73fea7b1dcc27c88adc05f7e06b5) @@ -102,17 +102,23 @@ public Func CanRemove { get; set; } /// + /// Gets or sets an action for obtaining the logic to perform after removing the tree node. + /// The first object parameter represents the data of the tree node. + /// The second object parameter represents the data of the parent tree node. + /// + public Action OnNodeRemoved { get; set; } + + /// /// Gets or sets a function for obtaining the confirmation text that is shown before the tree node is removed. /// The object parameter represents the data of the tree node. /// public Func OnRemoveConfirmationText { get; set; } /// - /// Gets or sets an action for obtaining the logic to perform after removing the tree node. - /// The first object parameter represents the data of the tree node. - /// The second object parameter represents the data of the parent tree node. + /// Gets or sets a function for obtaining the confirmation text that is shown before all child nodes are removed. + /// The object parameter represents the data of the tree node. /// - public Action OnNodeRemoved { get; set; } + public Func OnRemoveChildNodesConfirmationText { get; set; } /// /// Gets or sets a function for checking whether or not the tree node can be checked. @@ -265,6 +271,12 @@ public Func OnRemoveConfirmationText { get; set; } /// + /// Gets or sets a function for obtaining the confirmation text that is shown before all child nodes are removed. + /// The parameter represents the data of the tree node. + /// + public Func OnRemoveChildNodesConfirmationText { get; set; } + + /// /// Gets or sets a function for checking whether or not the tree node can be checked. /// The parameter represents the data of the tree node. /// @@ -357,12 +369,15 @@ CanRemove = treeNodeInfo.CanRemove != null ? (tag, parentTag) => treeNodeInfo.CanRemove((TData) tag, parentTag) : (Func) null, - OnRemoveConfirmationText = treeNodeInfo.OnRemoveConfirmationText != null - ? tag => treeNodeInfo.OnRemoveConfirmationText((TData) tag) - : (Func) null, OnNodeRemoved = treeNodeInfo.OnNodeRemoved != null ? (tag, parentTag) => treeNodeInfo.OnNodeRemoved((TData) tag, parentTag) : (Action) null, + OnRemoveConfirmationText = treeNodeInfo.OnRemoveConfirmationText != null + ? tag => treeNodeInfo.OnRemoveConfirmationText((TData) tag) + : (Func) null, + OnRemoveChildNodesConfirmationText = treeNodeInfo.OnRemoveChildNodesConfirmationText != null + ? tag => treeNodeInfo.OnRemoveChildNodesConfirmationText((TData) tag) + : (Func) null, CanCheck = treeNodeInfo.CanCheck != null ? tag => treeNodeInfo.CanCheck((TData) tag) : (Func) null, Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs =================================================================== diff -u -r7e6c0b97836346830f6d1d4ffea8df72695710cc -raf56cce642fc73fea7b1dcc27c88adc05f7e06b5 --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs (.../TreeNodeInfoTest.cs) (revision 7e6c0b97836346830f6d1d4ffea8df72695710cc) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs (.../TreeNodeInfoTest.cs) (revision af56cce642fc73fea7b1dcc27c88adc05f7e06b5) @@ -47,8 +47,9 @@ Assert.IsNull(treeNodeInfo.CanRename); Assert.IsNull(treeNodeInfo.OnNodeRenamed); Assert.IsNull(treeNodeInfo.CanRemove); - Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); Assert.IsNull(treeNodeInfo.OnNodeRemoved); + Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); + Assert.IsNull(treeNodeInfo.OnRemoveChildNodesConfirmationText); Assert.IsNull(treeNodeInfo.CanCheck); Assert.IsNull(treeNodeInfo.CheckedState); Assert.IsNull(treeNodeInfo.OnNodeChecked); @@ -73,9 +74,10 @@ Func childNodeObjects = o => new object[0]; Func canRename = (o1, o2) => true; Action onNodeRenamed = (o, newName) => {}; - Func onRemoveConfirmationText = o => ""; Func canRemove = (o1, o2) => true; Action onNodeRemoved = (o1, o2) => {}; + Func onRemoveConfirmationText = o => ""; + Func onRemoveChildNodesConfirmationText = o => ""; Func canCheck = o => true; Func isChecked = o => TreeNodeCheckedState.Checked; Action onNodeChecked = (o1, o2) => {}; @@ -96,8 +98,9 @@ treeNodeInfo.CanRename = canRename; treeNodeInfo.OnNodeRenamed = onNodeRenamed; treeNodeInfo.CanRemove = canRemove; - treeNodeInfo.OnRemoveConfirmationText = onRemoveConfirmationText; treeNodeInfo.OnNodeRemoved = onNodeRemoved; + treeNodeInfo.OnRemoveConfirmationText = onRemoveConfirmationText; + treeNodeInfo.OnRemoveChildNodesConfirmationText = onRemoveChildNodesConfirmationText; treeNodeInfo.CanCheck = canCheck; treeNodeInfo.CheckedState = isChecked; treeNodeInfo.OnNodeChecked = onNodeChecked; @@ -118,8 +121,9 @@ Assert.AreEqual(canRename, treeNodeInfo.CanRename); Assert.AreEqual(onNodeRenamed, treeNodeInfo.OnNodeRenamed); Assert.AreEqual(canRemove, treeNodeInfo.CanRemove); - Assert.AreEqual(onRemoveConfirmationText, treeNodeInfo.OnRemoveConfirmationText); Assert.AreEqual(onNodeRemoved, treeNodeInfo.OnNodeRemoved); + Assert.AreEqual(onRemoveConfirmationText, treeNodeInfo.OnRemoveConfirmationText); + Assert.AreEqual(onRemoveChildNodesConfirmationText, treeNodeInfo.OnRemoveChildNodesConfirmationText); Assert.AreEqual(canCheck, treeNodeInfo.CanCheck); Assert.AreEqual(isChecked, treeNodeInfo.CheckedState); Assert.AreEqual(onNodeChecked, treeNodeInfo.OnNodeChecked); @@ -147,8 +151,9 @@ Assert.IsNull(treeNodeInfo.CanRename); Assert.IsNull(treeNodeInfo.OnNodeRenamed); Assert.IsNull(treeNodeInfo.CanRemove); - Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); Assert.IsNull(treeNodeInfo.OnNodeRemoved); + Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); + Assert.IsNull(treeNodeInfo.OnRemoveChildNodesConfirmationText); Assert.IsNull(treeNodeInfo.CanCheck); Assert.IsNull(treeNodeInfo.CheckedState); Assert.IsNull(treeNodeInfo.OnNodeChecked); @@ -173,8 +178,9 @@ Func canRename = (o1, o2) => true; Action onNodeRenamed = (o, newName) => {}; Func canRemove = (o1, o2) => true; - Func onRemoveConfirmationText = o => ""; Action onNodeRemoved = (o1, o2) => {}; + Func onRemoveConfirmationText = o => ""; + Func onRemoveChildNodesConfirmationText = o => ""; Func canCheck = o => true; Func isChecked = o => TreeNodeCheckedState.Checked; Action onNodeChecked = (o1, o2) => {}; @@ -194,8 +200,9 @@ treeNodeInfo.CanRename = canRename; treeNodeInfo.OnNodeRenamed = onNodeRenamed; treeNodeInfo.CanRemove = canRemove; - treeNodeInfo.OnRemoveConfirmationText = onRemoveConfirmationText; treeNodeInfo.OnNodeRemoved = onNodeRemoved; + treeNodeInfo.OnRemoveConfirmationText = onRemoveConfirmationText; + treeNodeInfo.OnRemoveChildNodesConfirmationText = onRemoveChildNodesConfirmationText; treeNodeInfo.CanCheck = canCheck; treeNodeInfo.CheckedState = isChecked; treeNodeInfo.OnNodeChecked = onNodeChecked; @@ -216,8 +223,9 @@ Assert.AreEqual(canRename, treeNodeInfo.CanRename); Assert.AreEqual(onNodeRenamed, treeNodeInfo.OnNodeRenamed); Assert.AreEqual(canRemove, treeNodeInfo.CanRemove); - Assert.AreEqual(onRemoveConfirmationText, treeNodeInfo.OnRemoveConfirmationText); Assert.AreEqual(onNodeRemoved, treeNodeInfo.OnNodeRemoved); + Assert.AreEqual(onRemoveConfirmationText, treeNodeInfo.OnRemoveConfirmationText); + Assert.AreEqual(onRemoveChildNodesConfirmationText, treeNodeInfo.OnRemoveChildNodesConfirmationText); Assert.AreEqual(canCheck, treeNodeInfo.CanCheck); Assert.AreEqual(isChecked, treeNodeInfo.CheckedState); Assert.AreEqual(onNodeChecked, treeNodeInfo.OnNodeChecked); @@ -250,8 +258,9 @@ Assert.IsNull(treeNodeInfo.CanRename); Assert.IsNull(treeNodeInfo.OnNodeRenamed); Assert.IsNull(treeNodeInfo.CanRemove); - Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); Assert.IsNull(treeNodeInfo.OnNodeRemoved); + Assert.IsNull(treeNodeInfo.OnRemoveConfirmationText); + Assert.IsNull(treeNodeInfo.OnRemoveChildNodesConfirmationText); Assert.IsNull(treeNodeInfo.CanCheck); Assert.IsNull(treeNodeInfo.CheckedState); Assert.IsNull(treeNodeInfo.OnNodeChecked); @@ -291,8 +300,9 @@ CanRename = (o1, o2) => true, OnNodeRenamed = (o, newName) => { onNodeRenamedCounter++; }, CanRemove = (o1, o2) => true, - OnRemoveConfirmationText = o => "Confirmation message", OnNodeRemoved = (o1, o2) => { onNodeRemovedCounter++; }, + OnRemoveConfirmationText = o => "Confirmation message", + OnRemoveChildNodesConfirmationText = o => "Confirmation message 2", CanCheck = o => true, CheckedState = o => TreeNodeCheckedState.Checked, OnNodeChecked = (o1, o2) => { onNodeCheckedCounter++; }, @@ -327,6 +337,7 @@ Assert.IsTrue(treeNodeInfo.CanRename(0, 1)); Assert.IsTrue(treeNodeInfo.CanRemove(0, 1)); Assert.AreEqual("Confirmation message", treeNodeInfo.OnRemoveConfirmationText(0)); + Assert.AreEqual("Confirmation message 2", treeNodeInfo.OnRemoveChildNodesConfirmationText(0)); Assert.IsTrue(treeNodeInfo.CanCheck(0)); Assert.AreEqual(TreeNodeCheckedState.Checked, treeNodeInfo.CheckedState(0)); Assert.IsTrue(treeNodeInfo.CanDrag(0, 1));