Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r2ea2a436a8c2b2ea2d2737113e9519bd22d5734a -r7cebb168afee29822b64f213045a21520b38ade0 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 2ea2a436a8c2b2ea2d2737113e9519bd22d5734a) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 7cebb168afee29822b64f213045a21520b38ade0) @@ -597,23 +597,19 @@ var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group, failureMechanism, assessmentSectionMock); - var calculationItem = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new GeneralNormProbabilityInput()) { Name = "Nieuwe berekening" }; - var observerMock = mocks.StrictMock(); - observerMock.Expect(o => o.UpdateObserver()); - var treeViewControlMock = mocks.StrictMock(); + observerMock.Expect(o => o.UpdateObserver()); guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilder); mocks.ReplayAll(); group.Children.Add(calculationItem); - nodeData.Attach(observerMock); var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r7e310cacb9c4875ce8e2d60af68a46c4c8b55041 -r7cebb168afee29822b64f213045a21520b38ade0 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 7e310cacb9c4875ce8e2d60af68a46c4c8b55041) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 7cebb168afee29822b64f213045a21520b38ade0) @@ -22,7 +22,7 @@ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { + public class Resources { private static global::System.Resources.ResourceManager resourceMan; @@ -36,7 +36,7 @@ /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ringtoets.HeightStructures.Data.Properties.Resources", typeof(Resources).Assembly); @@ -51,7 +51,7 @@ /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -63,7 +63,7 @@ /// /// Looks up a localized string similar to Nieuwe berekening. /// - internal static string HeightStructuresCalculation_DefaultName { + public static string HeightStructuresCalculation_DefaultName { get { return ResourceManager.GetString("HeightStructuresCalculation_DefaultName", resourceCulture); } @@ -72,7 +72,7 @@ /// /// Looks up a localized string similar to HTKW. /// - internal static string HeightStructuresFailureMechanism_Code { + public static string HeightStructuresFailureMechanism_Code { get { return ResourceManager.GetString("HeightStructuresFailureMechanism_Code", resourceCulture); } @@ -81,7 +81,7 @@ /// /// Looks up a localized string similar to Kunstwerken - Hoogte kunstwerk. /// - internal static string HeightStructuresFailureMechanism_DisplayName { + public static string HeightStructuresFailureMechanism_DisplayName { get { return ResourceManager.GetString("HeightStructuresFailureMechanism_DisplayName", resourceCulture); } Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Ringtoets.HeightStructures.Data.csproj =================================================================== diff -u -r47d80506f9f8166de93579dbba94e57f4101927b -r7cebb168afee29822b64f213045a21520b38ade0 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Ringtoets.HeightStructures.Data.csproj (.../Ringtoets.HeightStructures.Data.csproj) (revision 47d80506f9f8166de93579dbba94e57f4101927b) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/Ringtoets.HeightStructures.Data.csproj (.../Ringtoets.HeightStructures.Data.csproj) (revision 7cebb168afee29822b64f213045a21520b38ade0) @@ -73,7 +73,7 @@ - ResXFileCodeGenerator + PublicResXFileCodeGenerator Resources.Designer.cs Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs =================================================================== diff -u -re2986d74885385074ad0f6d164a722c0c7e39a8b -r7cebb168afee29822b64f213045a21520b38ade0 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision e2986d74885385074ad0f6d164a722c0c7e39a8b) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision 7cebb168afee29822b64f213045a21520b38ade0) @@ -29,11 +29,13 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Common.Forms.TreeNodeInfos; using Ringtoets.HeightStructures.Data; using Ringtoets.HeightStructures.Forms.PresentationObjects; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; +using HeightStructuresDataResources = Ringtoets.HeightStructures.Data.Properties.Resources; using HeightStructuresFormsResources = Ringtoets.HeightStructures.Forms.Properties.Resources; namespace Ringtoets.HeightStructures.Plugin @@ -208,7 +210,7 @@ } builder.AddCreateCalculationGroupItem(group) - .AddCreateCalculationItem(context, groupContext => { }) + .AddCreateCalculationItem(context, AddCalculation) .AddSeparator() .AddPerformAllCalculationsInGroupItem(group, context, (calculationGroup, groupContext) => { }, groupContext => "") .AddClearAllCalculationOutputInGroupItem(group) @@ -239,6 +241,16 @@ parentGroupContext.NotifyObservers(); } + private static void AddCalculation(HeightStructuresCalculationGroupContext context) + { + var calculation = new HeightStructuresCalculation + { + Name = NamingHelper.GetUniqueName(context.WrappedData.Children, HeightStructuresDataResources.HeightStructuresCalculation_DefaultName, c => c.Name) + }; + context.WrappedData.Children.Add(calculation); + context.WrappedData.NotifyObservers(); + } + #endregion #region HeightStructuresCalculationContext TreeNodeInfo Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r8b294a80cb40bb01ffe437ad314baec0d038d160 -r7cebb168afee29822b64f213045a21520b38ade0 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 8b294a80cb40bb01ffe437ad314baec0d038d160) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 7cebb168afee29822b64f213045a21520b38ade0) @@ -369,6 +369,50 @@ } [Test] + public void ContextMenuStrip_ClickOnAddCalculationItem_AddCalculationToCalculationGroupAndNotifyObservers() + { + // Setup + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + var group = new CalculationGroup(); + var failureMechanism = new HeightStructuresFailureMechanism(); + var assessmentSectionMock = mocks.StrictMock(); + var nodeData = new HeightStructuresCalculationGroupContext(group, + failureMechanism, + assessmentSectionMock); + var calculation = new HeightStructuresCalculation + { + Name = "Nieuwe berekening" + }; + var observerMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + + observerMock.Expect(o => o.UpdateObserver()); + guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + mocks.ReplayAll(); + + group.Children.Add(calculation); + nodeData.Attach(observerMock); + + var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Precondition + Assert.AreEqual(1, group.Children.Count); + + // Call + contextMenu.Items[contextMenuAddCalculationIndexRootGroup].PerformClick(); + + // Assert + Assert.AreEqual(2, group.Children.Count); + var newlyAddedItem = group.Children.Last(); + Assert.IsInstanceOf(newlyAddedItem); + Assert.AreEqual("Nieuwe berekening (1)", newlyAddedItem.Name, + "An item with the same name default name already exists, therefore '(1)' needs to be appended."); + + mocks.VerifyAll(); + } + + [Test] public void OnNodeRemoved_NestedCalculationGroup_RemoveGroupAndNotifyObservers() { // Setup