Index: Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs
===================================================================
diff -u -r4fde87e9b64c21a70b06ff295fd34cc1932fe72a -rd02fa527769665fe275986468c6ac570fbad5e48
--- Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 4fde87e9b64c21a70b06ff295fd34cc1932fe72a)
+++ Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -1540,6 +1540,24 @@
}
///
+ /// Looks up a localized string similar to NodePresenter_CommandHandler_required.
+ ///
+ public static string NodePresenter_CommandHandler_required {
+ get {
+ return ResourceManager.GetString("NodePresenter_CommandHandler_required", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Voor het aanmaken van knopen in de boom is een ContextMenuBuilderProvider nodig..
+ ///
+ public static string NodePresenter_ContextMenuBuilderProvider_required {
+ get {
+ return ResourceManager.GetString("NodePresenter_ContextMenuBuilderProvider_required", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
public static System.Drawing.Bitmap note {
@@ -2396,15 +2414,6 @@
}
///
- /// Looks up a localized string similar to .
- ///
- public static string String1 {
- get {
- return ResourceManager.GetString("String1", resourceCulture);
- }
- }
-
- ///
/// Looks up a localized string similar to Grafiek.
///
public static string ToolWindow_Name_Chart {
Index: Core/Common/src/Core.Common.Gui/Properties/Resources.resx
===================================================================
diff -u -r4fde87e9b64c21a70b06ff295fd34cc1932fe72a -rd02fa527769665fe275986468c6ac570fbad5e48
--- Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision 4fde87e9b64c21a70b06ff295fd34cc1932fe72a)
+++ Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -893,7 +893,10 @@
Verwijder de knoop uit de boom.
-
-
+
+ NodePresenter_CommandHandler_required
+
+ Voor het aanmaken van knopen in de boom is een ContextMenuBuilderProvider nodig.
+
\ No newline at end of file
Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs
===================================================================
diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48
--- Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852)
+++ Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -1,8 +1,8 @@
+using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
-using Core.Common.Base;
using Core.Common.Base.Data;
using Core.Common.Controls;
using Core.Common.Controls.Swf.TreeViewControls;
@@ -14,15 +14,31 @@
{
public class ProjectNodePresenter : TreeViewNodePresenterBase
{
- ///
- /// Sets the to be used for creating the .
- ///
- public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; }
+ private readonly IContextMenuBuilderProvider contextMenuBuilderProvider;
+ private readonly IGuiCommandHandler commandHandler;
///
- /// Sets the to be used for binding items to actions in the .
+ /// Creates a new instance of , which uses the
+ /// and
+ /// to create and bind its .
///
- public IGuiCommandHandler CommandHandler { private get; set; }
+ /// The
+ /// to use for building a .
+ /// The to defer the add
+ /// item action to.
+ public ProjectNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider, IGuiCommandHandler commandHandler)
+ {
+ if (contextMenuBuilderProvider == null)
+ {
+ throw new ArgumentNullException("contextMenuBuilderProvider", Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required);
+ }
+ if (commandHandler == null)
+ {
+ throw new ArgumentNullException("commandHandler", Common.Gui.Properties.Resources.NodePresenter_CommandHandler_required);
+ }
+ this.contextMenuBuilderProvider = contextMenuBuilderProvider;
+ this.commandHandler = commandHandler;
+ }
public override IEnumerable GetChildNodeObjects(Project project)
{
@@ -40,17 +56,13 @@
public override ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData)
{
- if (ContextMenuBuilderProvider == null)
- {
- return null;
- }
var addItem = new StrictContextMenuItem(
Resources.AddItem,
null,
Resources.plus,
- (s, e) => CommandHandler.AddNewItem(nodeData));
+ (s, e) => commandHandler.AddNewItem(nodeData));
- return ContextMenuBuilderProvider
+ return contextMenuBuilderProvider
.Get(sender)
.AddCustomItem(addItem)
.AddSeparator()
Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs
===================================================================
diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48
--- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852)
+++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -1,7 +1,5 @@
using System.Collections.Generic;
using System.Linq;
-using System.Windows.Forms;
-using Core.Common.Base;
using Core.Common.Base.Data;
using Core.Common.Controls;
using Core.Common.Gui;
@@ -31,11 +29,7 @@
public override IEnumerable GetProjectTreeViewNodePresenters()
{
- yield return new ProjectNodePresenter
- {
- ContextMenuBuilderProvider = Gui.ContextMenuProvider,
- CommandHandler = Gui.CommandHandler
- };
+ yield return new ProjectNodePresenter(Gui.ContextMenuProvider, Gui.CommandHandler);
}
public static ProjectExplorerGuiPlugin Instance { get; private set; }
Index: Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs
===================================================================
diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48
--- Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs (.../ProjectNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e)
+++ Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs (.../ProjectNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -1,8 +1,10 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Windows.Forms;
using Core.Common.Base;
using Core.Common.Base.Data;
using Core.Common.Controls;
+using Core.Common.Gui;
using Core.Common.Gui.TestUtils;
using Core.Common.TestUtils;
using Core.Plugins.ProjectExplorer.NodePresenters;
@@ -26,30 +28,47 @@
}
[Test]
- public void GetContextMenu_NoContextMenuProvider_ReturnsNull()
+ public void Constructor_NoMenuBuilderProvider_ArgumentNullException()
{
- // Setup
- var presenter = new ProjectNodePresenter();
- var nodeMock = mocks.StrictMock();
+ // Call
+ TestDelegate test = () => new ProjectNodePresenter(null, null);
+ // Assert
+ var message = Assert.Throws(test).Message;
+ StringAssert.StartsWith(CommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message);
+ StringAssert.EndsWith("contextMenuBuilderProvider", message);
+ }
+
+ [Test]
+ public void Constructor_NoCommandHandlerProvider_ArgumentNullException()
+ {
// Call
- var result = presenter.GetContextMenu(nodeMock, new Project());
+ TestDelegate test = () => new ProjectNodePresenter(mocks.StrictMock(), null);
// Assert
- Assert.IsNull(result);
+ var message = Assert.Throws(test).Message;
+ StringAssert.StartsWith(CommonGuiResources.NodePresenter_CommandHandler_required, message);
+ StringAssert.EndsWith("commandHandler", message);
}
[Test]
+ public void Constructor_WithParamsSet_NewInstance()
+ {
+ // Call
+ var result = new ProjectNodePresenter(mocks.StrictMock(), mocks.StrictMock());
+
+ // Assert
+ Assert.IsInstanceOf(result);
+ }
+
+ [Test]
[TestCase(true)]
[TestCase(false)]
- public void GetContextMenu_MenuBuilderProvider_ReturnsFourItems(bool commonItemsEnabled)
+ public void GetContextMenu_Always_ReturnsFourItems(bool commonItemsEnabled)
{
// Setup
var nodeMock = mocks.StrictMock();
- var nodePresenter = new ProjectNodePresenter
- {
- ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)
- };
+ var nodePresenter = new ProjectNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled), mocks.StrictMock());
mocks.ReplayAll();
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs
===================================================================
diff -u -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6 -rd02fa527769665fe275986468c6ac570fbad5e48
--- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -5,7 +5,6 @@
using Core.Common.Controls;
using Core.Common.Gui;
using Ringtoets.Common.Forms.PresentationObjects;
-
using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
namespace Ringtoets.Common.Forms.NodePresenters
@@ -15,10 +14,7 @@
///
public class CategoryTreeFolderNodePresenter : RingtoetsNodePresenterBase
{
- ///
- /// Sets the to be used for creating the .
- ///
- public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; }
+ public CategoryTreeFolderNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {}
protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, CategoryTreeFolder nodeData)
{
@@ -34,7 +30,7 @@
protected override ContextMenuStrip GetContextMenu(ITreeNode sender, CategoryTreeFolder nodeData)
{
- return ContextMenuBuilderProvider
+ return contextMenuBuilderProvider
.Get(sender)
.AddExpandAllItem()
.AddCollapseAllItem()
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs
===================================================================
diff -u -re388ea76d1d044298cc89156c8744fbea1bcb736 -rd02fa527769665fe275986468c6ac570fbad5e48
--- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision e388ea76d1d044298cc89156c8744fbea1bcb736)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -5,6 +5,7 @@
using System.Windows.Forms;
using Core.Common.Controls;
+using Core.Common.Gui;
using Core.Common.Utils.Collections;
using Ringtoets.Common.Forms.Properties;
@@ -18,6 +19,23 @@
/// The data object class corresponding with the node.
public abstract class RingtoetsNodePresenterBase : ITreeNodePresenter
{
+ protected readonly IContextMenuBuilderProvider contextMenuBuilderProvider;
+
+ ///
+ /// Creates a new instance of , which uses the
+ /// to create and bind its .
+ ///
+ /// The
+ /// to use for building a .
+ public RingtoetsNodePresenterBase(IContextMenuBuilderProvider contextMenuBuilderProvider)
+ {
+ if (contextMenuBuilderProvider == null)
+ {
+ throw new ArgumentNullException("contextMenuBuilderProvider", Core.Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required);
+ }
+ this.contextMenuBuilderProvider = contextMenuBuilderProvider;
+ }
+
public ITreeView TreeView { get; set; }
public Type NodeTagType
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs
===================================================================
diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs (.../CategoryTreeFolderNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs (.../CategoryTreeFolderNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -24,11 +24,33 @@
[TestFixture]
public class CategoryTreeFolderNodePresenterTest
{
+ private MockRepository mockRepository;
+ private IContextMenuBuilderProvider contextMenuBuilderProviderMock;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mockRepository = new MockRepository();
+ contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ }
+
[Test]
+ public void Constructor_NoMenuBuilderProvider_ArgumentNullException()
+ {
+ // Call
+ TestDelegate test = () => new CategoryTreeFolderNodePresenter(null);
+
+ // Assert
+ var message = Assert.Throws(test).Message;
+ StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message);
+ StringAssert.EndsWith("contextMenuBuilderProvider", message);
+ }
+
+ [Test]
public void DefaultConstructor_ExpectedValues()
{
// Call
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
// Assert
Assert.IsInstanceOf>(nodePresenter);
@@ -49,7 +71,7 @@
currentNode.ForegroundColor = Color.AliceBlue;
mocks.ReplayAll();
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
var folder = new CategoryTreeFolder("Cool name", new object[0], category);
// Call
@@ -66,7 +88,7 @@
public void CanRenamedNode_Always_ReturnFalse()
{
// Setup
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
// Call
var isRenamingAllowed = nodePresenter.CanRenameNode(null);
@@ -79,7 +101,7 @@
public void CanRenamedNodeTo_Always_ReturnFalse()
{
// Setup
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
// Call
var isRenamingAllowed = nodePresenter.CanRenameNodeTo(null, "");
@@ -92,7 +114,7 @@
public void CanRemove_Always_ReturnFalse()
{
// Setup
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
// Call
var isRenamingAllowed = nodePresenter.CanRemove(null, null);
@@ -114,9 +136,9 @@
new object(),
new object()
});
-
- var nodePresenter = new CategoryTreeFolderNodePresenter();
+ var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock);
+
// Call
IEnumerable children = nodePresenter.GetChildNodeObjects(folder);
@@ -135,10 +157,7 @@
var mocks = new MockRepository();
var nodeMock = mocks.StrictMock();
- var nodePresenter = new CategoryTreeFolderNodePresenter
- {
- ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)
- };
+ var nodePresenter = new CategoryTreeFolderNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled));
mocks.ReplayAll();
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs
===================================================================
diff -u -re388ea76d1d044298cc89156c8744fbea1bcb736 -rd02fa527769665fe275986468c6ac570fbad5e48
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs (.../RingtoetsNodePresenterBaseTest.cs) (revision e388ea76d1d044298cc89156c8744fbea1bcb736)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs (.../RingtoetsNodePresenterBaseTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48)
@@ -3,6 +3,8 @@
using System.Linq;
using Core.Common.Controls;
+using Core.Common.Gui;
+using Core.Common.Gui.Properties;
using Core.Common.Utils.Collections;
using NUnit.Framework;
@@ -16,11 +18,33 @@
[TestFixture]
public class RingtoetsNodePresenterBaseTest
{
+ private MockRepository mockRepository;
+ private IContextMenuBuilderProvider contextMenuBuilderProviderMock;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mockRepository = new MockRepository();
+ contextMenuBuilderProviderMock = mockRepository.StrictMock();
+ }
+
[Test]
+ public void Constructor_NoMenuBuilderProvider_ArgumentNullException()
+ {
+ // Call
+ TestDelegate test = () => new SimpleRingtoetsNodePresenterBase(null);
+
+ // Assert
+ var message = Assert.Throws(test).Message;
+ StringAssert.StartsWith(Resources.NodePresenter_ContextMenuBuilderProvider_required, message);
+ StringAssert.EndsWith("contextMenuBuilderProvider", message);
+ }
+
+ [Test]
public void DefaultConstructor_ExpectedValues()
{
// Call
- var nodePresenter = new SimpleRingtoetsNodePresenterBase();
+ var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock);
// Assert
Assert.AreEqual(typeof(double), nodePresenter.NodeTagType);
@@ -37,7 +61,7 @@
var nodeData = mocks.StrictMock