Index: Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs (.../DocumentViewController.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs (.../DocumentViewController.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -171,7 +171,7 @@ private static IView CreateViewForData(object data, ViewInfo viewInfo) { - IView view = viewInfo.CreateInstance(); + IView view = viewInfo.CreateInstance(data); view.Data = viewInfo.GetViewData(data); Index: Core/Common/src/Core.Common.Gui/Plugin/ViewInfo.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Core/Common/src/Core.Common.Gui/Plugin/ViewInfo.cs (.../ViewInfo.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/Plugin/ViewInfo.cs (.../ViewInfo.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -35,7 +35,12 @@ /// public ViewInfo() { - CreateInstance = () => (IView) Activator.CreateInstance(ViewType); + CreateInstance = o => + { + var view = (IView)Activator.CreateInstance(ViewType); + view.Data = o; + return view; + }; } /// @@ -119,7 +124,7 @@ /// /// This property needs to be set if no default constructor is available /// for the view type. - public Func CreateInstance { get; set; } + public Func CreateInstance { get; set; } public override string ToString() { @@ -140,7 +145,12 @@ /// public ViewInfo() { - CreateInstance = () => (TView) Activator.CreateInstance(ViewType); + CreateInstance = o => + { + var view = (TView) Activator.CreateInstance(ViewType); + view.Data = o; + return view; + }; } /// @@ -242,7 +252,7 @@ /// /// This property needs to be set if no default constructor is available /// for the view type. - public Func CreateInstance { get; set; } + public Func CreateInstance { get; set; } /// /// Performs an implicit conversion from to . @@ -266,7 +276,7 @@ viewInfo.AfterCreate?.Invoke((TView) v, (TData) o); }, GetViewName = (v, o) => viewInfo.GetViewName?.Invoke((TView) v, (TViewData) o), - CreateInstance = () => viewInfo.CreateInstance() + CreateInstance = o => viewInfo.CreateInstance((TData) o) }; } Index: Core/Common/test/Core.Common.Gui.Test/Plugin/ViewInfoTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Core/Common/test/Core.Common.Gui.Test/Plugin/ViewInfoTest.cs (.../ViewInfoTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Gui.Test/Plugin/ViewInfoTest.cs (.../ViewInfoTest.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -75,7 +75,7 @@ // Do something useful }; Func closeViewForDataDelegate = (view, o) => true; - Func createInstanceDelegate = () => viewInstance; + Func createInstanceDelegate = o => viewInstance; // Call viewInfo.DataType = newDataType; @@ -115,11 +115,14 @@ ViewType = typeof(StringView) }; + int data = new Random(21).Next(); + // Call - IView view = viewInfo.CreateInstance(); + IView view = viewInfo.CreateInstance(data); // Assert Assert.IsInstanceOf(view); + Assert.AreEqual(data, view.Data); } [Test] @@ -137,8 +140,7 @@ string text = viewInfo.ToString(); // Assert - string expectedText = string.Format("{0} : {1} : {2}", - viewInfo.DataType, viewInfo.ViewDataType, viewInfo.ViewType); + string expectedText = $"{viewInfo.DataType} : {viewInfo.ViewDataType} : {viewInfo.ViewType}"; Assert.AreEqual(expectedText, text); } @@ -178,7 +180,7 @@ // Do something useful }; Func closeViewForDataDelegate = (view, o) => true; - Func createInstanceDelegate = () => new StringView(); + Func createInstanceDelegate = o => new StringView(); // Call viewInfo.Description = newDescription; @@ -210,8 +212,7 @@ string text = viewInfo.ToString(); // Assert - string expectedText = string.Format("{0} : {1} : {2}", - viewInfo.DataType, viewInfo.ViewDataType, viewInfo.ViewType); + string expectedText = $"{viewInfo.DataType} : {viewInfo.ViewDataType} : {viewInfo.ViewType}"; Assert.AreEqual(expectedText, text); } @@ -220,9 +221,10 @@ { // Setup var viewInfo = new ViewInfo(); + int data = new Random(21).Next(); // Call - StringView view = viewInfo.CreateInstance(); + StringView view = viewInfo.CreateInstance(data); // Assert Assert.IsNotNull(view); @@ -277,7 +279,7 @@ viewInfo.GetViewData = getViewDataDelegate; viewInfo.AfterCreate = afterCreateDelegate; viewInfo.CloseForData = closeViewForDataDelegate; - viewInfo.CreateInstance = () => new StringView + viewInfo.CreateInstance = o => new StringView { Text = "A" }; @@ -298,7 +300,7 @@ Assert.AreEqual(icon, info.Image); Assert.IsTrue(viewInfo.AdditionalDataCheck(dataObject)); Assert.AreEqual(dataObject.ToString(), viewInfo.GetViewData(dataObject)); - Assert.AreEqual("A", viewInfo.CreateInstance().Text); + Assert.AreEqual("A", viewInfo.CreateInstance(dataObject).Text); viewInfo.AfterCreate(stringView, dataObject); Assert.IsTrue(afterCreateDelegateCalled); Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -rf1f94637a6b45b394493bf16a078b317c02d329b -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision f1f94637a6b45b394493bf16a078b317c02d329b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -325,7 +325,7 @@ GetViewData = context => context.WrappedData, Image = RingtoetsCommonFormsResources.FailureMechanismContributionIcon, CloseForData = CloseFailureMechanismContributionViewForData, - CreateInstance = () => new FailureMechanismContributionView(Gui.ViewCommands), + CreateInstance = context => new FailureMechanismContributionView(Gui.ViewCommands), AfterCreate = (view, context) => view.AssessmentSection = context.Parent }; @@ -411,7 +411,7 @@ GetViewName = (view, context) => RingtoetsCommonFormsResources.Calculation_Input, GetViewData = context => context.Calculation, CloseForData = CloseWaveConditionsInputViewForData, - CreateInstance = () => new WaveConditionsInputView() + CreateInstance = context => new WaveConditionsInputView() }; } Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -ra70cb733eb761229173777b9f6cd1b977830b24b -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision a70cb733eb761229173777b9f6cd1b977830b24b) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -207,7 +207,7 @@ view.AssessmentSection = context.AssessmentSection; view.PipingFailureMechanism = context.FailureMechanism; }, - CreateInstance = () => new PipingCalculationsView() + CreateInstance = context => new PipingCalculationsView() }; yield return new ViewInfo Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs =================================================================== diff -u -r81fa8a9bf3bd503cbd280e88b8f6037a840cff12 -rcbf0d02e860c096fd24d07fb4655e59206929827 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision 81fa8a9bf3bd503cbd280e88b8f6037a840cff12) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision cbf0d02e860c096fd24d07fb4655e59206929827) @@ -327,8 +327,20 @@ [Test] public void CreateInstance_Always_NewViewWithHandler() { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new PipingFailureMechanism(); + var calculationGroup = new CalculationGroup(); + var context = new PipingCalculationGroupContext(calculationGroup, + Enumerable.Empty(), + Enumerable.Empty(), + failureMechanism, + assessmentSection); + // Call - IView view = info.CreateInstance(); + IView view = info.CreateInstance(context); // Assert Assert.IsInstanceOf(view);