Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/BackgroundMapDataSelectionDialog.cs =================================================================== diff -u -r3c1b0b97a6f8a5f3df4b9dad0164e69a886d1330 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/BackgroundMapDataSelectionDialog.cs (.../BackgroundMapDataSelectionDialog.cs) (revision 3c1b0b97a6f8a5f3df4b9dad0164e69a886d1330) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/BackgroundMapDataSelectionDialog.cs (.../BackgroundMapDataSelectionDialog.cs) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -23,7 +23,6 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; -using Core.Common.Controls.DataGrid; using Core.Common.Controls.Dialogs; using Core.Components.DotSpatial.Forms.Views; using Core.Components.Gis.Data; @@ -60,6 +59,17 @@ } /// + /// Creates a new instance of . + /// + /// The parent of the dialog. + /// The active map data. + /// Thrown when is null. + public BackgroundMapDataSelectionDialog(IWin32Window dialogParent, WmtsMapData mapData) : this(dialogParent) + { + SelectedMapData = mapData; + } + + /// /// Gets the selected or null if none selected. /// public WmtsMapData SelectedMapData { get; private set; } @@ -112,7 +122,7 @@ { return cancelButton; } - + #endregion #region ComboBox Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -ra52c36344e544ee981eb356ec1d79b6569338594 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision a52c36344e544ee981eb356ec1d79b6569338594) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -892,22 +892,23 @@ var mapDataItem = new StrictContextMenuItem( RingtoetsIntegrationPluginResources.BackgroundMapData_SelectMapData, RingtoetsIntegrationPluginResources.BackgroundMapData_SelectMapData_Tooltip, - RingtoetsCommonFormsResources.MapsIcon, (sender, args) => SelectMapData(assessmentSection)); + RingtoetsCommonFormsResources.MapsIcon, (sender, args) => SelectMapData(assessmentSection, nodeData)); return Gui.Get(nodeData, treeViewControl) .AddCustomItem(mapDataItem) .AddPropertiesItem() .Build(); } - private void SelectMapData(IAssessmentSection assessmentSection) + private void SelectMapData(IAssessmentSection assessmentSection, BackgroundMapDataContext backgroundMapDataContext) { if (assessmentSection == null) { return; } - using (var dialog = new BackgroundMapDataSelectionDialog(Gui.MainWindow)) + WmtsMapData currentMapData = backgroundMapDataContext.WrappedData; + using (var dialog = new BackgroundMapDataSelectionDialog(Gui.MainWindow, currentMapData)) { if (dialog.ShowDialog() == DialogResult.OK) { Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs =================================================================== diff -u -rd506ab6eea64d53852f6419f39493e3a326078b0 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs (.../BackgroundMapDataSelectionDialogTest.cs) (revision d506ab6eea64d53852f6419f39493e3a326078b0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs (.../BackgroundMapDataSelectionDialogTest.cs) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -27,8 +27,10 @@ using Core.Common.Controls.Dialogs; using Core.Common.TestUtil; using Core.Components.DotSpatial.Forms.Views; +using Core.Components.Gis.Data; using NUnit.Extensions.Forms; using NUnit.Framework; +using Rhino.Mocks; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.Integration.Forms.Test @@ -66,7 +68,7 @@ Bitmap actualImage = dialog.Icon.ToBitmap(); TestHelper.AssertImagesAreEqual(expectedImage, actualImage); - var mapLayers = (ComboBox)new ComboBoxTester("mapLayerComboBox", dialog).TheObject; + var mapLayers = (ComboBox) new ComboBoxTester("mapLayerComboBox", dialog).TheObject; Assert.AreEqual(ComboBoxStyle.DropDownList, mapLayers.DropDownStyle); Assert.IsInstanceOf>(mapLayers.DataSource); Assert.AreEqual("DisplayName", mapLayers.DisplayMember); @@ -76,6 +78,66 @@ } [Test] + public void MapDataConstructor_MapDataNull_DefaultProperties() + { + // Setup + var mockRepository = new MockRepository(); + var dialogParent = mockRepository.Stub(); + mockRepository.ReplayAll(); + + // Call + using (var dialog = new BackgroundMapDataSelectionDialog(dialogParent, null)) + { + // Assert + Assert.IsNull(dialog.SelectedMapData); + } + mockRepository.VerifyAll(); + } + + [Test] + public void MapDataConstructor_ParentNull_ThrowsArgumentNullException() + { + // Setup + var mapData = new WmtsMapData("1", "2", "3", "image/"); + + // Call + TestDelegate test = () => new BackgroundMapDataSelectionDialog(null, mapData); + + // Assert + string parameter = Assert.Throws(test).ParamName; + Assert.AreEqual("dialogParent", parameter); + } + + [Test] + public void MapDataConstructor_WithParents_DefaultProperties() + { + // Setup + var mapData = new WmtsMapData("1", "2", "3", "image/"); + using (var dialogParent = new Form()) + { + // Call + using (var dialog = new BackgroundMapDataSelectionDialog(dialogParent, mapData)) + { + // Assert + Assert.IsInstanceOf(dialog); + Assert.AreEqual(@"Selecteer achtergrondkaart", dialog.Text); + Assert.AreSame(mapData, dialog.SelectedMapData); + + Icon icon = BitmapToIcon(RingtoetsCommonFormsResources.SelectionDialogIcon); + Bitmap expectedImage = icon.ToBitmap(); + Bitmap actualImage = dialog.Icon.ToBitmap(); + TestHelper.AssertImagesAreEqual(expectedImage, actualImage); + + var mapLayers = (ComboBox) new ComboBoxTester("mapLayerComboBox", dialog).TheObject; + Assert.AreEqual(ComboBoxStyle.DropDownList, mapLayers.DropDownStyle); + Assert.IsInstanceOf>(mapLayers.DataSource); + Assert.AreEqual("DisplayName", mapLayers.DisplayMember); + Assert.IsTrue(mapLayers.Sorted); + } + } + } + + [Test] [Apartment(ApartmentState.STA)] public void ShowDialog_Always_DefaultProperties() { Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj =================================================================== diff -u -rd506ab6eea64d53852f6419f39493e3a326078b0 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision d506ab6eea64d53852f6419f39493e3a326078b0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -142,10 +142,6 @@ {5A91174A-FB95-4C9D-9CA5-81C0B8D4361A} Core.Components.DotSpatial.Forms - - {aa47e858-a2a7-470e-8b2d-c76ae8ed9ccd} - Core.Components.DotSpatial - {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5} Core.Components.Gis.Forms @@ -154,10 +150,6 @@ {318ba582-88c9-4816-a54a-a7e431461de3} Core.Components.Gis - - {9b6f3987-eaf7-4733-80c1-3dcab44d87ae} - Core.Components.DotSpatial.TestUtil - {BF753DB5-973B-4ADF-B0F6-9437325C3466} Ringtoets.GrassCoverErosionInwards.Data.TestUtil Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/BackgroundMapDataContextTreeNodeInfoTest.cs =================================================================== diff -u -r3c1b0b97a6f8a5f3df4b9dad0164e69a886d1330 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/BackgroundMapDataContextTreeNodeInfoTest.cs (.../BackgroundMapDataContextTreeNodeInfoTest.cs) (revision 3c1b0b97a6f8a5f3df4b9dad0164e69a886d1330) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/BackgroundMapDataContextTreeNodeInfoTest.cs (.../BackgroundMapDataContextTreeNodeInfoTest.cs) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -21,21 +21,31 @@ using System.Drawing; using System.Linq; +using System.Windows.Forms; +using Core.Common.Base; using Core.Common.Controls.TreeView; using Core.Common.Gui; +using Core.Common.Gui.Commands; using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.Forms.MainWindow; +using Core.Common.Gui.TestUtil.ContextMenu; using Core.Common.TestUtil; using Core.Components.Gis.Data; +using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Integration.Forms; using Ringtoets.Integration.Forms.PresentationObjects; using Ringtoets.Integration.Forms.Properties; namespace Ringtoets.Integration.Plugin.Test.TreeNodeInfos { [TestFixture] - public class BackgroundMapDataContextTreeNodeInfoTest + public class BackgroundMapDataContextTreeNodeInfoTest : NUnitFormTest { + private readonly int selectContextMenuIndex = 0; + [Test] public void Initialized_Always_ExpectedPropertiesSet() { @@ -175,6 +185,222 @@ mockRepository.VerifyAll(); } + [Test] + public void GivenNoMapDataSet_WhenSelectingValidMapDataFromContextMenu_ThenMapDataSetAndNotifiesObserver() + { + // Given + var mockRepository = new MockRepository(); + var assessmentSectionObserver = mockRepository.StrictMock(); + assessmentSectionObserver.Expect(o => o.UpdateObserver()); + + var backgroundMapDataObserver = mockRepository.StrictMock(); + backgroundMapDataObserver.Expect(o => o.UpdateObserver()); + + var wmtsMapData = new WmtsMapData("1", "2", "3", "image/"); + var backgroundMapDataContext = new BackgroundMapDataContext(wmtsMapData); + + using (var treeViewControl = new TreeViewControl()) + using (var plugin = new RingtoetsPlugin()) + { + var viewCommands = mockRepository.Stub(); + var mainWindow = mockRepository.Stub(); + + var gui = mockRepository.Stub(); + gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Stub(cmp => cmp.Get(backgroundMapDataContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mockRepository.ReplayAll(); + + var assessmentSection = new ObservableTestAssessmentSectionStub(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.BackgroundMapData.Attach(backgroundMapDataObserver); + + DialogBoxHandler = (name, wnd) => + { + var tester = (BackgroundMapDataSelectionDialog) new FormTester(name).TheObject; + tester.DialogResult = DialogResult.OK; + tester.Close(); + }; + + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + + using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(backgroundMapDataContext, assessmentSection, treeViewControl)) + { + // When + contextMenuStrip.Items[selectContextMenuIndex].PerformClick(); + + // Then + Assert.AreSame(wmtsMapData, assessmentSection.BackgroundMapData.MapData); + Assert.IsTrue(assessmentSection.BackgroundMapData.MapData.IsVisible); + } + } + mockRepository.VerifyAll(); + } + + [Test] + public void GivenNoMapDataSet_WhenSelectingMapDataFromContextMenuCancelled_ThenNoObserversNotified() + { + // Given + var mockRepository = new MockRepository(); + var assessmentSectionObserver = mockRepository.StrictMock(); + var backgroundMapDataObserver = mockRepository.StrictMock(); + + var wmtsMapData = new WmtsMapData("1", "2", "3", "image/"); + var backgroundMapDataContext = new BackgroundMapDataContext(wmtsMapData); + + using (var treeViewControl = new TreeViewControl()) + using (var plugin = new RingtoetsPlugin()) + { + var viewCommands = mockRepository.Stub(); + var mainWindow = mockRepository.Stub(); + + var gui = mockRepository.Stub(); + gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Stub(cmp => cmp.Get(backgroundMapDataContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mockRepository.ReplayAll(); + + var assessmentSection = new ObservableTestAssessmentSectionStub(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.BackgroundMapData.Attach(backgroundMapDataObserver); + + DialogBoxHandler = (name, wnd) => + { + var tester = (BackgroundMapDataSelectionDialog) new FormTester(name).TheObject; + tester.DialogResult = DialogResult.Cancel; + tester.Close(); + }; + + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + + using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(backgroundMapDataContext, assessmentSection, treeViewControl)) + { + // When + contextMenuStrip.Items[selectContextMenuIndex].PerformClick(); + + // Then + Assert.IsNull(assessmentSection.BackgroundMapData.MapData); + } + } + mockRepository.VerifyAll(); + } + + [Test] + public void GivenMapDataSet_WhenSelectingValidMapDataFromContextMenu_ThenMapDataSetAndNotifiesObserver() + { + // Given + var mockRepository = new MockRepository(); + var assessmentSectionObserver = mockRepository.StrictMock(); + assessmentSectionObserver.Expect(o => o.UpdateObserver()); + + var backgroundMapDataObserver = mockRepository.StrictMock(); + backgroundMapDataObserver.Expect(o => o.UpdateObserver()); + + var wmtsMapData = new WmtsMapData("1", "2", "3", "image/"); + var backgroundMapDataContext = new BackgroundMapDataContext(wmtsMapData); + + using (var treeViewControl = new TreeViewControl()) + using (var plugin = new RingtoetsPlugin()) + { + var viewCommands = mockRepository.Stub(); + var mainWindow = mockRepository.Stub(); + + var gui = mockRepository.Stub(); + gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Stub(cmp => cmp.Get(backgroundMapDataContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mockRepository.ReplayAll(); + + var assessmentSection = new ObservableTestAssessmentSectionStub(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.BackgroundMapData.Attach(backgroundMapDataObserver); + + assessmentSection.BackgroundMapData.MapData = wmtsMapData; + + DialogBoxHandler = (name, wnd) => + { + var tester = (BackgroundMapDataSelectionDialog) new FormTester(name).TheObject; + tester.DialogResult = DialogResult.OK; + tester.Close(); + }; + + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + + using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(backgroundMapDataContext, assessmentSection, treeViewControl)) + { + // When + contextMenuStrip.Items[selectContextMenuIndex].PerformClick(); + + // Then + Assert.AreSame(wmtsMapData, assessmentSection.BackgroundMapData.MapData); + Assert.IsTrue(assessmentSection.BackgroundMapData.MapData.IsVisible); + } + } + mockRepository.VerifyAll(); + } + + [Test] + public void GivenMapDataSet_WhenSelectingMapDataFromContextMenuCancelled_ThenNoObserversNotified() + { + // Given + var mockRepository = new MockRepository(); + var assessmentSectionObserver = mockRepository.StrictMock(); + var backgroundMapDataObserver = mockRepository.StrictMock(); + + var wmtsMapData = new WmtsMapData("1", "2", "3", "image/"); + var backgroundMapDataContext = new BackgroundMapDataContext(wmtsMapData); + + using (var treeViewControl = new TreeViewControl()) + using (var plugin = new RingtoetsPlugin()) + { + var viewCommands = mockRepository.Stub(); + var mainWindow = mockRepository.Stub(); + + var gui = mockRepository.Stub(); + gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Stub(cmp => cmp.Get(backgroundMapDataContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mockRepository.ReplayAll(); + + var assessmentSection = new ObservableTestAssessmentSectionStub(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.BackgroundMapData.Attach(backgroundMapDataObserver); + assessmentSection.BackgroundMapData.MapData = wmtsMapData; + + DialogBoxHandler = (name, wnd) => + { + var tester = (BackgroundMapDataSelectionDialog) new FormTester(name).TheObject; + tester.DialogResult = DialogResult.Cancel; + tester.Close(); + }; + + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + + using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(backgroundMapDataContext, assessmentSection, treeViewControl)) + { + // When + contextMenuStrip.Items[selectContextMenuIndex].PerformClick(); + + // Then + Assert.AreEqual(wmtsMapData, assessmentSection.BackgroundMapData.MapData); + Assert.IsFalse(assessmentSection.BackgroundMapData.MapData.IsVisible); + } + } + mockRepository.VerifyAll(); + } + private static TreeNodeInfo GetInfo(RingtoetsPlugin plugin) { return plugin.GetTreeNodeInfos().First(tni => tni.TagType == typeof(BackgroundMapDataContext)); Index: Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs =================================================================== diff -u -r49adfd44a6a7ffd0cb8eedc291b2343f4c0bc632 -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs (.../DataImportHelper.cs) (revision 49adfd44a6a7ffd0cb8eedc291b2343f4c0bc632) +++ Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs (.../DataImportHelper.cs) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -36,7 +36,6 @@ using Ringtoets.Integration.Plugin.Handlers; using Ringtoets.Piping.Data; using Ringtoets.Piping.IO.Importers; -using Ringtoets.Piping.IO.TestUtil; using Ringtoets.Piping.Plugin.FileImporter; using Ringtoets.Piping.Primitives; Index: Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/Ringtoets.Integration.TestUtils.csproj =================================================================== diff -u -r78cc5b59d47ca61eb812d0c69c7a17a4570e4ddc -rf35a1bdec32700c5cb0027d714c8a51dfc118e0d --- Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/Ringtoets.Integration.TestUtils.csproj (.../Ringtoets.Integration.TestUtils.csproj) (revision 78cc5b59d47ca61eb812d0c69c7a17a4570e4ddc) +++ Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/Ringtoets.Integration.TestUtils.csproj (.../Ringtoets.Integration.TestUtils.csproj) (revision f35a1bdec32700c5cb0027d714c8a51dfc118e0d) @@ -143,10 +143,6 @@ {a4972765-ddbb-4a1e-b17c-7185577e5591} Ringtoets.Piping.Integration.TestUtils - - {4A675B7E-96AD-4911-B154-85385C9330C3} - Ringtoets.Piping.IO.TestUtil - {87c2c553-c0bc-40bf-b1ea-b83bff357f27} Ringtoets.Revetment.Data