Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PresentationObjects/FailureMechanismContributionContext.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Common/src/Ringtoets.Common.Forms/PresentationObjects/FailureMechanismContributionContext.cs (.../FailureMechanismContributionContext.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PresentationObjects/FailureMechanismContributionContext.cs (.../FailureMechanismContributionContext.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -22,8 +22,6 @@ using System; using Core.Common.Base; - -using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -r1edcce70c4214ce894351c4e19f69c0c954d6360 -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 1edcce70c4214ce894351c4e19f69c0c954d6360) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -46,9 +46,10 @@ public partial class FailureMechanismContributionView : UserControl, IView, IObserver { private DataGridViewColumn probabilityPerYearColumn; - private FailureMechanismContributionContext data; + private FailureMechanismContribution data; private bool revertingComboBoxSelectedValue; + private IAssessmentSection assessmentSection; /// /// Creates a new instance of . @@ -71,10 +72,25 @@ } set { - HandleNewDataSet((FailureMechanismContributionContext)value); + HandleNewDataSet((FailureMechanismContribution)value); } } + /// + /// Gets and sets the assessment section this view belongs to. + /// + public IAssessmentSection AssessmentSection + { + get + { + return assessmentSection; + } + set + { + HandleNewAssessmentSectionSet(value); + } + } + public void UpdateObserver() { SetNormText(); @@ -121,7 +137,7 @@ { if (e.ColumnIndex == probabilityPerYearColumn.Index) { - var contributionItem = data.WrappedData.Distribution.ElementAt(e.RowIndex); + var contributionItem = data.Distribution.ElementAt(e.RowIndex); if (contributionItem.Contribution == 0.0) { e.Value = RingtoetsIntegrationFormsResources.FailureMechanismContributionView_ProbabilityPerYear_Not_applicable; @@ -130,28 +146,35 @@ } } - private void HandleNewDataSet(FailureMechanismContributionContext value) + private void HandleNewDataSet(FailureMechanismContribution value) { - UnbindAssessmentSectionCompositionChange(); UnbindNormChange(); DetachFromData(); data = value; SetGridDataSource(); SetNormText(); - SetAssessmentSectionComposition(); AttachToData(); BindNormChange(); + } + + private void HandleNewAssessmentSectionSet(IAssessmentSection value) + { + UnbindAssessmentSectionCompositionChange(); + + assessmentSection = value; + + SetAssessmentSectionComposition(); BindAssessmentSectionCompositionChange(); } private void SetGridDataSource() { if (data != null) { - probabilityDistributionGrid.DataSource = data.WrappedData.Distribution; + probabilityDistributionGrid.DataSource = data.Distribution; probabilityDistributionGrid.Invalidate(); } } @@ -204,10 +227,8 @@ private void NormValueChanged(object sender, EventArgs eventArgs) { - FailureMechanismContribution contribution = data.WrappedData; - - contribution.Norm = Convert.ToInt32(normInput.Value); - contribution.NotifyObservers(); + data.Norm = Convert.ToInt32(normInput.Value); + data.NotifyObservers(); } private void ResetTextIfEmtpy() @@ -222,15 +243,15 @@ { if (data != null) { - normInput.Value = data.WrappedData.Norm; + normInput.Value = data.Norm; } } private void SetAssessmentSectionComposition() { - if (data != null) + if (AssessmentSection != null) { - assessmentSectionCompositionComboBox.SelectedValue = data.Parent.Composition; + assessmentSectionCompositionComboBox.SelectedValue = AssessmentSection.Composition; } } @@ -279,22 +300,17 @@ return; } - IAssessmentSection assessmentSection = data.Parent; - var dialogResult = MessageBox.Show(RingtoetsIntegrationFormsResources.FailureMechanismContributionView_ChangeComposition_Change_will_clear_calculation_output_accept_question, CoreCommonBaseResources.Confirm, MessageBoxButtons.OKCancel); if (dialogResult == DialogResult.OK) { assessmentSection.ChangeComposition((AssessmentSectionComposition)assessmentSectionCompositionComboBox.SelectedValue); SetGridDataSource(); - foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) + foreach (ICalculationItem calculation in assessmentSection.GetFailureMechanisms().SelectMany(failureMechanism => failureMechanism.CalculationItems)) { - foreach (ICalculationItem calculation in failureMechanism.CalculationItems) - { - calculation.ClearOutput(); - calculation.NotifyObservers(); - } + calculation.ClearOutput(); + calculation.NotifyObservers(); } assessmentSection.NotifyObservers(); } Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -r149c1b4d30710a88480556b70ba2b49015b1dded -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 149c1b4d30710a88480556b70ba2b49015b1dded) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -37,6 +37,7 @@ using log4net; using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Common.Forms.Views; @@ -139,11 +140,13 @@ /// public override IEnumerable GetViewInfos() { - yield return new ViewInfo + yield return new ViewInfo { GetViewName = (v, o) => RingtoetsDataResources.FailureMechanismContribution_DisplayName, + GetViewData = context => context.WrappedData, Image = RingtoetsCommonFormsResources.GenericInputOutputIcon, - CloseForData = CloseFailureMechanismContributionViewForData + CloseForData = CloseFailureMechanismContributionViewForData, + AfterCreate = (view, context) => view.AssessmentSection = context.Parent }; yield return new ViewInfo @@ -253,7 +256,7 @@ { Text = failureMechanismContribution => RingtoetsDataResources.FailureMechanismContribution_DisplayName, Image = failureMechanismContribution => RingtoetsCommonFormsResources.GenericInputOutputIcon, - ContextMenuStrip = (failureMechanismContribution, parentData, treeViewControl) => Gui.Get(failureMechanismContribution.WrappedData, treeViewControl) + ContextMenuStrip = (failureMechanismContribution, parentData, treeViewControl) => Gui.Get(failureMechanismContribution, treeViewControl) .AddOpenItem() .AddSeparator() .AddExportItem() @@ -295,8 +298,7 @@ private static bool CloseFailureMechanismContributionViewForData(FailureMechanismContributionView view, object o) { var assessmentSection = o as IAssessmentSection; - var viewData = view.Data as FailureMechanismContributionContext; - return assessmentSection != null && viewData != null && assessmentSection.FailureMechanismContribution == viewData.WrappedData; + return assessmentSection != null && assessmentSection.FailureMechanismContribution == view.Data && assessmentSection == view.AssessmentSection; } #endregion Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs =================================================================== diff -u -rfc38d18fc6ff1749476da0ea43281d5d80568283 -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs (.../FailureMechanismContributionContextTreeNodeInfoTest.cs) (revision fc38d18fc6ff1749476da0ea43281d5d80568283) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs (.../FailureMechanismContributionContextTreeNodeInfoTest.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -93,7 +93,9 @@ { // Setup var contribution = new FailureMechanismContribution(Enumerable.Empty(), 100.0, 150000); - + + var assessmentSection = mocks.Stub(); + var context = new FailureMechanismContributionContext(contribution, assessmentSection); var treeViewControlMock = mocks.StrictMock(); var menuBuilderMock = mocks.StrictMock(); @@ -103,16 +105,12 @@ menuBuilderMock.Expect(mb => mb.Build()).Return(null); var gui = mocks.StrictMock(); - gui.Expect(cmp => cmp.Get(contribution, treeViewControlMock)).Return(menuBuilderMock); + gui.Expect(cmp => cmp.Get(context, treeViewControlMock)).Return(menuBuilderMock); gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - var context = new FailureMechanismContributionContext(contribution, assessmentSection); - using (var plugin = new RingtoetsGuiPlugin()) { Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs =================================================================== diff -u -r2e37f955003295c3a68b08f043fe736b661a8b84 -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 2e37f955003295c3a68b08f043fe736b661a8b84) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -56,11 +56,10 @@ failureMechanism }, otherContribution, norm); - var context = new FailureMechanismContributionContext(contribution, assessmentSection); - using (var contributionView = new FailureMechanismContributionView { - Data = context + Data = contribution, + AssessmentSection = assessmentSection }) { ShowFormWithView(contributionView); @@ -95,11 +94,10 @@ }, otherContribution, norm); distribution.Attach(observerMock); - var context = new FailureMechanismContributionContext(distribution, assessmentSection); - using (var distributionView = new FailureMechanismContributionView { - Data = context + Data = distribution, + AssessmentSection = assessmentSection }) { ShowFormWithView(distributionView); @@ -142,12 +140,10 @@ someMechanism }, random.Next(0, 100), expectedValue); - var initialContext = new FailureMechanismContributionContext(initialContribution, assessmentSection1); - var newContext = new FailureMechanismContributionContext(newContribution, assessmentSection2); - using (var distributionView = new FailureMechanismContributionView { - Data = initialContext + Data = initialContribution, + AssessmentSection = assessmentSection1 }) { ShowFormWithView(distributionView); @@ -157,7 +153,8 @@ Assert.AreEqual(aValue.ToString(), normTester.Properties.Text); // Call - distributionView.Data = newContext; + distributionView.Data = newContribution; + distributionView.AssessmentSection = assessmentSection2; // Assert Assert.AreEqual(expectedValue.ToString(), normTester.Properties.Text); @@ -177,7 +174,7 @@ var mockRepository = new MockRepository(); var someMechanism = mockRepository.Stub(); - var assessmentSection1 = mockRepository.Stub(); + var assessmentSection = mockRepository.Stub(); mockRepository.ReplayAll(); @@ -186,11 +183,10 @@ someMechanism }, random.Next(0, 100), initialValue); - var context = new FailureMechanismContributionContext(contribution, assessmentSection1); - using (var distributionView = new FailureMechanismContributionView { - Data = context + Data = contribution, + AssessmentSection = assessmentSection }) { ShowFormWithView(distributionView); @@ -229,9 +225,9 @@ { failureMechanismStub }, 100, 500); - var context = new FailureMechanismContributionContext(contributionData, assessmentSection); - view.Data = context; + view.Data = contributionData; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Then @@ -267,9 +263,9 @@ { failureMechanismStub }, 100.0 - contribution, norm); - var context = new FailureMechanismContributionContext(contributionData, assessmentSection); - view.Data = context; + view.Data = contributionData; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Then @@ -300,8 +296,8 @@ var assessmentSection = new AssessmentSection(composition); - var context = new FailureMechanismContributionContext(assessmentSection.FailureMechanismContribution, assessmentSection); - view.Data = context; + view.Data = assessmentSection.FailureMechanismContribution; + view.AssessmentSection = assessmentSection; // Call var compositionComboBox = (ComboBox)new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; @@ -326,9 +322,8 @@ { var assessmentSection = new AssessmentSection(initialComposition); - var context = new FailureMechanismContributionContext(assessmentSection.FailureMechanismContribution, assessmentSection); - - view.Data = context; + view.Data = assessmentSection.FailureMechanismContribution; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Precondition @@ -376,9 +371,8 @@ { var assessmentSection = new AssessmentSection(initialComposition); - var context = new FailureMechanismContributionContext(assessmentSection.FailureMechanismContribution, assessmentSection); - - view.Data = context; + view.Data = assessmentSection.FailureMechanismContribution; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Precondition @@ -428,9 +422,8 @@ var assessmentSection = new AssessmentSection(initialComposition); assessmentSection.Attach(observer); - var context = new FailureMechanismContributionContext(assessmentSection.FailureMechanismContribution, assessmentSection); - - view.Data = context; + view.Data = assessmentSection.FailureMechanismContribution; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Precondition @@ -506,9 +499,8 @@ assessmentSection.Expect(section => section.ChangeComposition(newComposition)); secondMockRepository.ReplayAll(); - var context = new FailureMechanismContributionContext(failureMechanismContribution, assessmentSection); - - view.Data = context; + view.Data = failureMechanismContribution; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Precondition @@ -583,9 +575,8 @@ assessmentSection.Expect(section => section.ChangeComposition(newComposition)).Repeat.Never(); secondMockRepository.ReplayAll(); - var context = new FailureMechanismContributionContext(failureMechanismContribution, assessmentSection); - - view.Data = context; + view.Data = failureMechanismContribution; + view.AssessmentSection = assessmentSection; ShowFormWithView(view); // Precondition Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs =================================================================== diff -u -ra9aafffab97152303562110b1d789bacb465ce24 -r66ee69642e1342ee03613d7d73831346f00d269c --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision a9aafffab97152303562110b1d789bacb465ce24) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 66ee69642e1342ee03613d7d73831346f00d269c) @@ -4,7 +4,6 @@ using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; -using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; @@ -39,23 +38,30 @@ public void GetViewName_Always_ReturnsViewName() { // Setup - var assessmentSection = mocks.Stub(); mocks.ReplayAll(); var view = new FailureMechanismContributionView(); var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), 30, 1000); - var context = new FailureMechanismContributionContext(failureMechanismContribution, assessmentSection); - // Call - var viewName = info.GetViewName(view, context); + var viewName = info.GetViewName(view, failureMechanismContribution); // Assert Assert.AreEqual("Faalkansverdeling", viewName); } [Test] + public void ViewDataType_Always_ReturnsViewDataType() + { + // Call + var viewDataType = info.ViewDataType; + + // Assert + Assert.AreEqual(typeof(FailureMechanismContribution), viewDataType); + } + + [Test] public void ViewType_Always_ReturnsViewType() { // Call @@ -86,6 +92,23 @@ } [Test] + public void GetViewData_Always_Returns_FailureMechanismContribution() + { + // Setup + var contribution = new FailureMechanismContribution(Enumerable.Empty(), 100.0, 123456); + var assessmentSection = mocks.StrictMock(); + var context = new FailureMechanismContributionContext(contribution, assessmentSection); + + mocks.ReplayAll(); + + // Call + var viewData = info.GetViewData(context); + + // Assert + Assert.AreSame(viewData, contribution); + } + + [Test] public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup @@ -98,11 +121,10 @@ .Return(AssessmentSectionComposition.Dike); mocks.ReplayAll(); - var context = new FailureMechanismContributionContext(contribution, assessmentSection); - var view = new FailureMechanismContributionView { - Data = context + Data = contribution, + AssessmentSection = assessmentSection }; // Call @@ -132,11 +154,10 @@ mocks.ReplayAll(); - var context = new FailureMechanismContributionContext(contribution1, assessmentSection1); - var view = new FailureMechanismContributionView { - Data = context + Data = contribution1, + AssessmentSection = assessmentSection1 }; // Call