Index: Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs =================================================================== diff -u -r79279d5d69482de69ef6b4be98ad53e666ab06e2 -rba310454172ed29499474b2f8b013fa0f0c523b8 --- Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs (.../CalculationTreeNodeInfoFactory.cs) (revision 79279d5d69482de69ef6b4be98ad53e666ab06e2) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/CalculationTreeNodeInfoFactory.cs (.../CalculationTreeNodeInfoFactory.cs) (revision ba310454172ed29499474b2f8b013fa0f0c523b8) @@ -223,13 +223,16 @@ /// /// The builder to add the context menu item to. /// The calculation group involved. + /// The calculation group context belonging to the calculation group. /// The action that performs all calculations. - public static void AddPerformAllCalculationsInGroupItem(IContextMenuBuilder builder, CalculationGroup calculationGroup, Action calculateAll) + public static void AddPerformAllCalculationsInGroupItem + (IContextMenuBuilder builder, CalculationGroup calculationGroup, TCalculationGroupContext context, Action calculateAll) + where TCalculationGroupContext : ICalculationContext { var performAllItem = new StrictContextMenuItem( Resources.Calculate_all, Resources.CalculationGroup_CalculateAll_ToolTip, - Resources.CalculateAllIcon, (o, args) => { calculateAll(calculationGroup); }); + Resources.CalculateAllIcon, (o, args) => { calculateAll(calculationGroup, context); }); if (!calculationGroup.GetCalculations().Any()) { @@ -245,12 +248,10 @@ /// /// The builder to add the context menu item to. /// The calculation involved. + /// The calculation context belonging to the calculation. /// The action that performs the calculation. public static void AddPerformCalculationItem( - IContextMenuBuilder builder, - TCalculation calculation, - TCalculationContext context, - Action calculate) + IContextMenuBuilder builder, TCalculation calculation, TCalculationContext context, Action calculate) where TCalculation : ICalculation where TCalculationContext : ICalculationContext { var calculateItem = new StrictContextMenuItem( Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs =================================================================== diff -u -r79279d5d69482de69ef6b4be98ad53e666ab06e2 -rba310454172ed29499474b2f8b013fa0f0c523b8 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs (.../CalculationTreeNodeInfoFactoryTest.cs) (revision 79279d5d69482de69ef6b4be98ad53e666ab06e2) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs (.../CalculationTreeNodeInfoFactoryTest.cs) (revision ba310454172ed29499474b2f8b013fa0f0c523b8) @@ -359,7 +359,7 @@ var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, calculationGroup, treeViewControl); // Call - CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, null); + CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, null, null); // Assert TestHelper.AssertContextMenuStripContainsItem(menuBuilder.Build(), 0, @@ -384,7 +384,7 @@ var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, calculationGroup, treeViewControl); // Call - CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, null); + CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, null, null); // Assert TestHelper.AssertContextMenuStripContainsItem(menuBuilder.Build(), 0, @@ -404,6 +404,7 @@ var viewCommandsHandler = mocks.StrictMock(); var treeViewControl = mocks.StrictMock(); var calculation = mocks.StrictMock(); + var failureMechanism = mocks.StrictMock(); mocks.ReplayAll(); @@ -416,9 +417,11 @@ } }; + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, calculationGroup, treeViewControl); - CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, context => counter++); + CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(menuBuilder, calculationGroup, calculationGroupContext, (group, context) => counter++); var contextMenuItem = menuBuilder.Build().Items[0]; // Call Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r79279d5d69482de69ef6b4be98ad53e666ab06e2 -rba310454172ed29499474b2f8b013fa0f0c523b8 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 79279d5d69482de69ef6b4be98ad53e666ab06e2) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision ba310454172ed29499474b2f8b013fa0f0c523b8) @@ -329,7 +329,7 @@ CalculationTreeNodeInfoFactory.AddCreateCalculationItem(builder, nodeData, AddCalculation); builder.AddSeparator(); - CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(builder, group, context => { }); // TODO: Actualy connect the calculation + CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(builder, group, nodeData, CalculateAll); CalculationTreeNodeInfoFactory.AddClearAllCalculationOutputInGroupItem(builder, group); builder.AddSeparator(); @@ -359,6 +359,18 @@ parentGroupContext.NotifyObservers(); } + private void CalculateAll(CalculationGroup group, GrassCoverErosionInwardsCalculationGroupContext context) + { + ActivityProgressDialogRunner.Run(Gui.MainWindow, group.GetCalculations() + .OfType() + .Select(calc => + CreateHydraRingTargetProbabilityCalculationActivity( + context.FailureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line + calc.InputParameters.HydraulicBoundaryLocation, + context.AssessmentSection.HydraulicBoundaryDatabase.FilePath, + calc))); + } + #endregion #region CalculationContext TreeNodeInfo Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r79279d5d69482de69ef6b4be98ad53e666ab06e2 -rba310454172ed29499474b2f8b013fa0f0c523b8 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision 79279d5d69482de69ef6b4be98ad53e666ab06e2) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision ba310454172ed29499474b2f8b013fa0f0c523b8) @@ -273,5 +273,81 @@ Assert.AreEqual("Weet u zeker dat u de uitvoer van deze berekening wilt wissen?", messageBoxText); mocks.VerifyAll(); } + +// [Test] +// public void GivenCalculation_WhenCalculatingFromContextMenu_ThenCalculationNotifiesObservers() +// { +// // Given +// var gui = mocks.DynamicMock(); +// var mainWindow = mocks.DynamicMock(); +// var observer = mocks.StrictMock(); +// var treeViewControlMock = mocks.StrictMock(); +// var calculateContextMenuItemIndex = 0; +// +// var section = new FailureMechanismSection("A", new[] +// { +// new Point2D(1, 2), +// new Point2D(3, 4) +// }); +// +// var failureMechanism = mocks.StrictMock(); +// failureMechanism.AddSection(section); +// var hydraulicBoundaryLocation1 = new HydraulicBoundaryLocation(100001, "", 1.1, 2.2); +// var hydraulicBoundaryLocation2 = new HydraulicBoundaryLocation(100002, "", 3.3, 4.4) +// { +// DesignWaterLevel = 4.2 +// }; +// +// var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase +// { +// Locations = +// { +// hydraulicBoundaryLocation1, +// hydraulicBoundaryLocation2 +// }, +// FilePath = "D:/nonExistingDirectory/nonExistingFile", +// Version = "random" +// }; +// +// var assessmentSectionMock = mocks.StrictMock(); +// assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); +// var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); +// +// var calculationContext = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); +// +// gui.Expect(g => g.Get(calculationContext, treeViewControlMock)).Return(new CustomItemsOnlyContextMenuBuilder()); +// gui.Expect(g => g.MainWindow).Return(mainWindow); +// +// observer.Expect(o => o.UpdateObserver()); +// +// mocks.ReplayAll(); +// +// plugin.Gui = gui; +// +// calculation.Attach(observer); +// +// var contextMenuAdapter = info.ContextMenuStrip(calculationContext, null, treeViewControlMock); +// +// DialogBoxHandler = (name, wnd) => +// { +// // Don't care about dialogs in this test. +// }; +// +// // When +// Action action = () => { contextMenuAdapter.Items[calculateContextMenuItemIndex].PerformClick(); }; +// +// // Then +// TestHelper.AssertLogMessages(action, messages => +// { +// var msgs = messages.GetEnumerator(); +// Assert.IsTrue(msgs.MoveNext()); +// StringAssert.StartsWith("Berekening van 'Nieuwe berekening' gestart om: ", msgs.Current); +// Assert.IsTrue(msgs.MoveNext()); +// StringAssert.StartsWith("Berekening van 'Nieuwe berekening' beƫindigd om: ", msgs.Current); +// }); +// Assert.IsNotNull(calculation.Output); +// +// mocks.VerifyAll(); +// } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -rf0dba4bd6e5de44972b57263c4934e72323ab3a8 -rba310454172ed29499474b2f8b013fa0f0c523b8 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision f0dba4bd6e5de44972b57263c4934e72323ab3a8) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision ba310454172ed29499474b2f8b013fa0f0c523b8) @@ -580,7 +580,7 @@ builder .AddCustomItem(validateAllItem); - CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(builder, group, CalculateAll); + CalculationTreeNodeInfoFactory.AddPerformAllCalculationsInGroupItem(builder, group, nodeData, CalculateAll); CalculationTreeNodeInfoFactory.AddClearAllCalculationOutputInGroupItem(builder, group); builder.AddSeparator(); @@ -669,7 +669,7 @@ return menuItem; } - private void CalculateAll(CalculationGroup group) + private void CalculateAll(CalculationGroup group, PipingCalculationGroupContext context) { ActivityProgressDialogRunner.Run(Gui.MainWindow, group.GetCalculations().OfType().Select(pc => new PipingCalculationActivity(pc))); }