Index: Core/Common/src/Core.Common.Base/Observable.cs =================================================================== diff -u -r2a90c0c1be6114f72af65c42f0a6f334b30e4755 -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/src/Core.Common.Base/Observable.cs (.../Observable.cs) (revision 2a90c0c1be6114f72af65c42f0a6f334b30e4755) +++ Core/Common/src/Core.Common.Base/Observable.cs (.../Observable.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -2,7 +2,7 @@ namespace Core.Common.Base { - public class Observable : IObservable + public abstract class Observable : IObservable { private readonly IList observers = new List(); Index: Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeView.cs =================================================================== diff -u -r113fd0fac19ed2f327ae9faa016f25660785b5ce -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeView.cs (.../TreeView.cs) (revision 113fd0fac19ed2f327ae9faa016f25660785b5ce) +++ Core/Common/src/Core.Common.Controls.Swf/TreeViewControls/TreeView.cs (.../TreeView.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -292,6 +292,9 @@ } } + /// + /// The method wraps with a couple of messaging boxes. + /// public void TryDeleteSelectedNodeData() { if (!SelectedNodeCanDelete()) Index: Core/Common/test/Core.Common.Base.Tests/Controls/Swf/TreeViewControls/TreeViewTest.cs =================================================================== diff -u -r67074d560004857fc12988e881533d9371828ddb -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/test/Core.Common.Base.Tests/Controls/Swf/TreeViewControls/TreeViewTest.cs (.../TreeViewTest.cs) (revision 67074d560004857fc12988e881533d9371828ddb) +++ Core/Common/test/Core.Common.Base.Tests/Controls/Swf/TreeViewControls/TreeViewTest.cs (.../TreeViewTest.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -6,12 +6,13 @@ using System.Windows.Forms; using Core.Common.Base.Tests.TestObjects; using Core.Common.Controls; +using Core.Common.Controls.Swf; using Core.Common.Controls.Swf.TreeViewControls; using Core.Common.TestUtils; -using Core.Common.Utils.Reflection; using NUnit.Framework; using Rhino.Mocks; using SharpTestsEx; +using MessageBox = Core.Common.Controls.Swf.MessageBox; using TreeView = Core.Common.Controls.Swf.TreeViewControls.TreeView; namespace Core.Common.Base.Tests.Controls.Swf.TreeViewControls @@ -324,45 +325,58 @@ [Test] public void DeletedNodeMovesSelectionToItsParentNode() { - var treeView = new TreeView + using (var treeView = new TreeView()) { - NodePresenters = + treeView.NodePresenters.Add(new ParentNodePresenter()); + treeView.NodePresenters.Add(new ChildNodePresenter()); + + var parent = new Parent() { - new ParentNodePresenter(), // DynamicParentNodePresenter(), - new ChildNodePresenter() - } - }; + Name = "Parent" + }; + var child = new Child() + { + Name = "Child" + }; + var grandchild = new Child() + { + Name = "GrandChild" + }; + parent.Children.Add(child); + child.Children.Add(grandchild); - var parent = new Parent() { Name = "Parent"}; - var child = new Child() { Name = "Child" }; - var grandchild = new Child() { Name = "GrandChild" }; - parent.Children.Add(child); - child.Children.Add(grandchild); + treeView.Data = parent; - treeView.Data = parent; + try + { + WindowsFormsTestHelper.Show(treeView); // show it to make sure that expand / refresh node really loads nodes. - try - { - WindowsFormsTestHelper.Show(treeView); // show it to make sure that expand / refresh node really loads nodes. + treeView.ExpandAll(); - treeView.ExpandAll(); - treeView.Refresh(); + treeView.SelectedNode = treeView.GetNodeByTag(grandchild); + MessageBox.CustomMessageBox = new MessageBoxAlwaysYes(); + treeView.TryDeleteSelectedNodeData(); - treeView.SelectedNode = treeView.GetNodeByTag(grandchild); + treeView.ExpandAll(); - TypeUtils.CallPrivateMethod(treeView, "DeleteSelectedNodeData"); - - treeView.ExpandAll(); - treeView.Refresh(); - - Assert.AreEqual(treeView.SelectedNode, treeView.GetNodeByTag(child)); + Assert.AreEqual(treeView.SelectedNode, treeView.GetNodeByTag(child)); + } + finally + { + WindowsFormsTestHelper.CloseAll(); + } } - finally + } + + class MessageBoxAlwaysYes : IMessageBox + { + public DialogResult Show(string text, string caption, MessageBoxButtons buttons) { - WindowsFormsTestHelper.CloseAll(); + return DialogResult.OK; } } + [Test] public void TreeViewUpdateOnManyPropertyChangesShouldBeFast() { Index: Core/Common/test/Core.Common.Base.Tests/TestObjects/Child.cs =================================================================== diff -u -r113fd0fac19ed2f327ae9faa016f25660785b5ce -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/test/Core.Common.Base.Tests/TestObjects/Child.cs (.../Child.cs) (revision 113fd0fac19ed2f327ae9faa016f25660785b5ce) +++ Core/Common/test/Core.Common.Base.Tests/TestObjects/Child.cs (.../Child.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -5,38 +5,14 @@ namespace Core.Common.Base.Tests.TestObjects { [Entity] - public class Child : IObservable + public class Child : Observable { - private readonly IList observers = new List(); - public Child() { Children = new EventedList(); } public string Name { get; set; } public IList Children { get; set; } - - #region IObservable - - public void Attach(IObserver observer) - { - observers.Add(observer); - } - - public void Detach(IObserver observer) - { - observers.Remove(observer); - } - - public void NotifyObservers() - { - foreach (var observer in observers) - { - observer.UpdateObserver(); - } - } - - #endregion } } \ No newline at end of file Index: Core/Common/test/Core.Common.Base.Tests/TestObjects/ChildNodePresenter.cs =================================================================== diff -u -r113fd0fac19ed2f327ae9faa016f25660785b5ce -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/test/Core.Common.Base.Tests/TestObjects/ChildNodePresenter.cs (.../ChildNodePresenter.cs) (revision 113fd0fac19ed2f327ae9faa016f25660785b5ce) +++ Core/Common/test/Core.Common.Base.Tests/TestObjects/ChildNodePresenter.cs (.../ChildNodePresenter.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -33,8 +33,6 @@ } } - - return true; } Index: Core/Common/test/Core.Common.Base.Tests/TestObjects/Parent.cs =================================================================== diff -u -r2a90c0c1be6114f72af65c42f0a6f334b30e4755 -r275f55bd5c011375598d201bd95c02cb8da63dba --- Core/Common/test/Core.Common.Base.Tests/TestObjects/Parent.cs (.../Parent.cs) (revision 2a90c0c1be6114f72af65c42f0a6f334b30e4755) +++ Core/Common/test/Core.Common.Base.Tests/TestObjects/Parent.cs (.../Parent.cs) (revision 275f55bd5c011375598d201bd95c02cb8da63dba) @@ -2,32 +2,9 @@ namespace Core.Common.Base.Tests.TestObjects { - public class Parent : IObservable + public class Parent : Observable { - private readonly IList observers = new List(); public readonly IList Children = new List(); public string Name { get; set; } - - #region IObservable - - public void Attach(IObserver observer) - { - observers.Add(observer); - } - - public void Detach(IObserver observer) - { - observers.Remove(observer); - } - - public void NotifyObservers() - { - foreach (var observer in observers) - { - observer.UpdateObserver(); - } - } - - #endregion } } \ No newline at end of file