Index: Ringtoets/Common/src/Ringtoets.Common.Placeholder/InputPlaceholder.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Placeholder/InputPlaceholder.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Placeholder/InputPlaceholder.cs (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -0,0 +1,14 @@ +namespace Ringtoets.Common.Placeholder +{ + /// + /// Defines a placeholder for input objects. + /// + public class InputPlaceholder : PlaceholderWithReadonlyName + { + /// + /// Initializes a new instance of the class. + /// + /// The name of the placeholder. + public InputPlaceholder(string name) : base(name) {} + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Placeholder/OutputPlaceholder.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Placeholder/OutputPlaceholder.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Placeholder/OutputPlaceholder.cs (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -0,0 +1,14 @@ +namespace Ringtoets.Common.Placeholder +{ + /// + /// Defines a placeholder for output objects. + /// + public class OutputPlaceholder : PlaceholderWithReadonlyName + { + /// + /// Initializes a new instance of the class. + /// + /// The name of the placeholder. + public OutputPlaceholder(string name) : base(name) { } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Placeholder/Ringtoets.Common.Placeholder.csproj =================================================================== diff -u -r279b6419e68e1a68659c8564b8410679a3d9d983 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Common/src/Ringtoets.Common.Placeholder/Ringtoets.Common.Placeholder.csproj (.../Ringtoets.Common.Placeholder.csproj) (revision 279b6419e68e1a68659c8564b8410679a3d9d983) +++ Ringtoets/Common/src/Ringtoets.Common.Placeholder/Ringtoets.Common.Placeholder.csproj (.../Ringtoets.Common.Placeholder.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -47,6 +47,8 @@ Properties\GlobalAssembly.cs + + Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSectionBase.cs =================================================================== diff -u -r5c044a6799b45bec77af170dca0a84bc434c5f6f -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSectionBase.cs (.../AssessmentSectionBase.cs) (revision 5c044a6799b45bec77af170dca0a84bc434c5f6f) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSectionBase.cs (.../AssessmentSectionBase.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -3,7 +3,7 @@ using Core.Common.Base; using Ringtoets.Common.Data; -using Ringtoets.Integration.Data.Placeholders; +using Ringtoets.Common.Placeholder; using Ringtoets.Integration.Data.Properties; namespace Ringtoets.Integration.Data Fisheye: Tag c0e407c65daebe4f446f9414367593eff80af1b2 refers to a dead (removed) revision in file `Ringtoets/Integration/src/Ringtoets.Integration.Data/Placeholders/InputPlaceholder.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c0e407c65daebe4f446f9414367593eff80af1b2 refers to a dead (removed) revision in file `Ringtoets/Integration/src/Ringtoets.Integration.Data/Placeholders/OutputPlaceholder.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/Ringtoets.Integration.Data.csproj =================================================================== diff -u -rbe35a7226351969e98f08dec755809139ce5f081 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/Ringtoets.Integration.Data.csproj (.../Ringtoets.Integration.Data.csproj) (revision be35a7226351969e98f08dec755809139ce5f081) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/Ringtoets.Integration.Data.csproj (.../Ringtoets.Integration.Data.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -51,8 +51,6 @@ - - True Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs =================================================================== diff -u -rbe35a7226351969e98f08dec755809139ce5f081 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision be35a7226351969e98f08dec755809139ce5f081) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -4,7 +4,6 @@ using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Placeholder; -using Ringtoets.Integration.Data.Placeholders; using Ringtoets.Integration.Forms.Properties; namespace Ringtoets.Integration.Forms.NodePresenters Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs =================================================================== diff -u -rbe35a7226351969e98f08dec755809139ce5f081 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision be35a7226351969e98f08dec755809139ce5f081) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/PlaceholderWithReadonlyNameNodePresenterTest.cs (.../PlaceholderWithReadonlyNameNodePresenterTest.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -10,7 +10,6 @@ using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Placeholder; -using Ringtoets.Integration.Data.Placeholders; using Ringtoets.Integration.Forms.NodePresenters; using RingtoetsFormsResources = Ringtoets.Integration.Forms.Properties.Resources; Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs =================================================================== diff -u -r5c044a6799b45bec77af170dca0a84bc434c5f6f -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision 5c044a6799b45bec77af170dca0a84bc434c5f6f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -2,27 +2,34 @@ using Core.Common.Base; using Ringtoets.Common.Data; +using Ringtoets.Common.Placeholder; namespace Ringtoets.Piping.Data { /// /// Model for performing piping calculations. /// - public class PipingFailureMechanism : IObservable, IFailureMechanism + public class PipingFailureMechanism : Observable, IFailureMechanism { - private readonly IList observers = new List(); - /// /// Initializes a new instance of the class. /// public PipingFailureMechanism() { + SectionDivisions = new InputPlaceholder("Vakindeling"); SurfaceLines = new ObservableList(); SoilProfiles = new ObservableList(); + BoundaryConditions = new InputPlaceholder("Randvoorwaarden"); Calculations = new List { new PipingData() }; + AssessmentResult = new OutputPlaceholder("Oordeel"); } /// + /// Gets the subdivision of the assessment section for which the piping failure mechanism is calculating. + /// + public InputPlaceholder SectionDivisions { get; private set; } + + /// /// Gets the available within the scope of the piping failure mechanism. /// public IEnumerable SurfaceLines { get; private set; } @@ -33,26 +40,18 @@ public IEnumerable SoilProfiles { get; private set; } /// + /// Gets the boundary conditions applying to the piping failure mechanism. + /// + public InputPlaceholder BoundaryConditions { get; private set; } + + /// /// Gets all available piping calculations. /// public ICollection Calculations { get; private set; } - public void Attach(IObserver observer) - { - observers.Add(observer); - } - - public void Detach(IObserver observer) - { - observers.Remove(observer); - } - - public void NotifyObservers() - { - foreach (var observer in observers) - { - observer.UpdateObserver(); - } - } + /// + /// Gets the calculation results for this failure mechanism. + /// + public OutputPlaceholder AssessmentResult { get; set; } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj =================================================================== diff -u -r5c044a6799b45bec77af170dca0a84bc434c5f6f -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj (.../Ringtoets.Piping.Data.csproj) (revision 5c044a6799b45bec77af170dca0a84bc434c5f6f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj (.../Ringtoets.Piping.Data.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -100,6 +100,10 @@ {d4200f43-3f72-4f42-af0a-8ced416a38ec} Ringtoets.Common.Data + + {e38c11e0-4384-44dd-9f5b-ee73d79fd7f5} + Ringtoets.Common.Placeholder + Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs =================================================================== diff -u -rca87cfba59d1e35ba9a281b92e5e90f8c8121db0 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision ca87cfba59d1e35ba9a281b92e5e90f8c8121db0) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -2,11 +2,13 @@ using System.Collections; using System.Linq; using System.Windows.Forms; + using Core.Common.Base.Workflow; using Core.Common.Controls; using Ringtoets.Common.Forms.Extensions; using Ringtoets.Common.Forms.NodePresenters; +using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.Helpers; using Ringtoets.Piping.Forms.PresentationObjects; @@ -34,18 +36,9 @@ protected override IEnumerable GetChildNodeObjects(PipingFailureMechanism failureMechanism, ITreeNode node) { - yield return failureMechanism.SoilProfiles; - yield return failureMechanism.SurfaceLines; - - foreach (var calculation in failureMechanism.Calculations) - { - yield return new PipingCalculationInputs - { - PipingData = calculation, - AvailablePipingSurfaceLines = failureMechanism.SurfaceLines, - AvailablePipingSoilProfiles = failureMechanism.SoilProfiles - }; - } + yield return new CategoryTreeFolder("Invoer", GetInputs(failureMechanism), TreeFolderCategory.Input); + yield return new CategoryTreeFolder("Berekeningen", GetCalculations(failureMechanism)); + yield return new CategoryTreeFolder("Uitvoer", GetOutputs(failureMechanism), TreeFolderCategory.Output); } protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingFailureMechanism failureMechanism) @@ -74,15 +67,15 @@ }); var clearOutputNode = rootMenu.AddMenuItem(Resources.Clear_all_output, - Resources.PipingFailureMechanism_Clear_all_output_Tooltip, - Resources.PipingOutputClear, (o, args) => - { - foreach (var calc in failureMechanism.Calculations) - { - calc.ClearOutput(); - calc.NotifyObservers(); - } - }); + Resources.PipingFailureMechanism_Clear_all_output_Tooltip, + Resources.PipingOutputClear, (o, args) => + { + foreach (var calc in failureMechanism.Calculations) + { + calc.ClearOutput(); + calc.NotifyObservers(); + } + }); if (!failureMechanism.Calculations.Any(c => c.HasOutput)) { @@ -92,5 +85,28 @@ return rootMenu; } + + private static IEnumerable GetInputs(PipingFailureMechanism failureMechanism) + { + yield return failureMechanism.SectionDivisions; + yield return failureMechanism.SoilProfiles; + yield return failureMechanism.SurfaceLines; + yield return failureMechanism.BoundaryConditions; + } + + private IEnumerable GetCalculations(PipingFailureMechanism failureMechanism) + { + return failureMechanism.Calculations.Select(calculation => new PipingCalculationInputs + { + PipingData = calculation, + AvailablePipingSurfaceLines = failureMechanism.SurfaceLines, + AvailablePipingSoilProfiles = failureMechanism.SoilProfiles + }); + } + + private IEnumerable GetOutputs(PipingFailureMechanism failureMechanism) + { + yield return failureMechanism.AssessmentResult; + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj =================================================================== diff -u -r5c044a6799b45bec77af170dca0a84bc434c5f6f -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision 5c044a6799b45bec77af170dca0a84bc434c5f6f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Ringtoets.Piping.Forms.csproj (.../Ringtoets.Piping.Forms.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -117,6 +117,10 @@ {4d840673-3812-4338-a352-84854e32b8a0} Ringtoets.Common.Forms + + {e38c11e0-4384-44dd-9f5b-ee73d79fd7f5} + Ringtoets.Common.Placeholder + {d64e4f0e-e341-496f-82b2-941ad202b4e3} Ringtoets.Piping.Calculation Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs =================================================================== diff -u -r5c044a6799b45bec77af170dca0a84bc434c5f6f -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision 5c044a6799b45bec77af170dca0a84bc434c5f6f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -25,10 +25,14 @@ // assert Assert.IsInstanceOf(piping); + Assert.AreEqual("Vakindeling", piping.SectionDivisions.Name); CollectionAssert.IsEmpty(piping.SurfaceLines); Assert.IsInstanceOf>(piping.SurfaceLines); CollectionAssert.IsEmpty(piping.SoilProfiles); Assert.AreEqual(1, piping.Calculations.Count); + Assert.AreEqual("Randvoorwaarden", piping.BoundaryConditions.Name); + + Assert.AreEqual("Oordeel", piping.AssessmentResult.Name); } [Test] Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj =================================================================== diff -u -ree60be046a1b4e4151bb567e9a9c3ab0876d3b55 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision ee60be046a1b4e4151bb567e9a9c3ab0876d3b55) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -85,6 +85,10 @@ {d4200f43-3f72-4f42-af0a-8ced416a38ec} Ringtoets.Common.Data + + {e38c11e0-4384-44dd-9f5b-ee73d79fd7f5} + Ringtoets.Common.Placeholder + {ce994cc9-6f6a-48ac-b4be-02c30a21f4db} Ringtoets.Piping.Data Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs =================================================================== diff -u -r71fa16075699948cabba65c56d646e0268fd2b89 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 71fa16075699948cabba65c56d646e0268fd2b89) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -6,6 +6,8 @@ using Core.Common.Utils.Collections; using NUnit.Framework; using Rhino.Mocks; + +using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Piping.Calculation.TestUtil; using Ringtoets.Piping.Data; @@ -73,18 +75,38 @@ var children = nodePresenter.GetChildNodeObjects(pipingFailureMechanism, nodeMock).OfType().ToArray(); // Assert - Assert.AreEqual(5, children.Length); - Assert.AreSame(pipingFailureMechanism.SoilProfiles, children[0]); - Assert.AreSame(pipingFailureMechanism.SurfaceLines, children[1]); - var pipingCalculationInputsChildObjects = children.Skip(2) - .Take(pipingFailureMechanism.Calculations.Count) - .Cast() - .ToArray(); - CollectionAssert.AreEqual(pipingFailureMechanism.Calculations, pipingCalculationInputsChildObjects.Select(pci => pci.PipingData).ToArray()); - foreach (var pipingData in pipingCalculationInputsChildObjects) + Assert.AreEqual(3, children.Length); + var inputsFolder = (CategoryTreeFolder)children[0]; + Assert.AreEqual("Invoer", inputsFolder.Name); + Assert.AreEqual(TreeFolderCategory.Input, inputsFolder.Category); + CollectionAssert.AreEqual(new object[] { + pipingFailureMechanism.SectionDivisions, + pipingFailureMechanism.SurfaceLines, + pipingFailureMechanism.SoilProfiles, + pipingFailureMechanism.BoundaryConditions + }, inputsFolder.Contents); + + var calculationsFolder = (CategoryTreeFolder)children[1]; + Assert.AreEqual("Berekeningen", calculationsFolder.Name); + Assert.AreEqual(TreeFolderCategory.General, calculationsFolder.Category); + var pipingCalculationChildObjects = calculationsFolder.Contents.Cast() + .Take(pipingFailureMechanism.Calculations.Count) + .ToArray(); + CollectionAssert.AreEqual(pipingFailureMechanism.Calculations, pipingCalculationChildObjects.Select(pci => pci.PipingData).ToArray()); + foreach (var pipingData in pipingCalculationChildObjects) + { Assert.AreSame(pipingFailureMechanism.SurfaceLines, pipingData.AvailablePipingSurfaceLines); + Assert.AreSame(pipingFailureMechanism.SoilProfiles, pipingData.AvailablePipingSoilProfiles); } + + var outputsFolder = (CategoryTreeFolder)children[2]; + Assert.AreEqual("Uitvoer", outputsFolder.Name); + Assert.AreEqual(TreeFolderCategory.Output, outputsFolder.Category); + CollectionAssert.AreEqual(new object[] + { + pipingFailureMechanism.AssessmentResult + }, outputsFolder.Contents); mocks.VerifyAll(); // Expect no calls on tree node } Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj =================================================================== diff -u -ree60be046a1b4e4151bb567e9a9c3ab0876d3b55 -rc0e407c65daebe4f446f9414367593eff80af1b2 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision ee60be046a1b4e4151bb567e9a9c3ab0876d3b55) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Ringtoets.Piping.Forms.Test.csproj (.../Ringtoets.Piping.Forms.Test.csproj) (revision c0e407c65daebe4f446f9414367593eff80af1b2) @@ -108,6 +108,10 @@ {4d840673-3812-4338-a352-84854e32b8a0} Ringtoets.Common.Forms + + {e38c11e0-4384-44dd-9f5b-ee73d79fd7f5} + Ringtoets.Common.Placeholder + {ce994cc9-6f6a-48ac-b4be-02c30a21f4db} Ringtoets.Piping.Data