Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r7dd710fee166527acb09c3903979f3757826648b -rfccca5cdac7de91489bdca3780d6f26a670f2642 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 7dd710fee166527acb09c3903979f3757826648b) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision fccca5cdac7de91489bdca3780d6f26a670f2642) @@ -431,7 +431,8 @@ Image = context => RiskeerCommonFormsResources.CalculationOutputFolderIcon, ForeColor = context => context.WrappedData.HasOutput ? Color.FromKnownColor(KnownColor.ControlText) - : Color.FromKnownColor(KnownColor.GrayText) + : Color.FromKnownColor(KnownColor.GrayText), + ChildNodeObjects = ProbabilisticOutputChildNodeObjects, }; yield return new TreeNodeInfo @@ -1119,6 +1120,21 @@ #endregion + #region ProbabilisticPipingOutputContext TreeNodeInfo + + private static object[] ProbabilisticOutputChildNodeObjects(ProbabilisticPipingOutputContext context) + { + ProbabilisticPipingCalculation calculation = context.WrappedData; + + return new object[] + { + new ProbabilisticPipingProfileSpecificOutputContext(calculation), + new ProbabilisticPipingSectionSpecificOutputContext(calculation) + }; + } + + #endregion + private StrictContextMenuItem CreateUpdateEntryAndExitPointItem(IPipingCalculation calculation) { var contextMenuEnabled = true; Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/Probabilistic/ProbabilisticPipingOutputContextTreeNodeInfoTest.cs =================================================================== diff -u -r3da4206f066cec3031bae10eea6353ae4abc7a16 -rfccca5cdac7de91489bdca3780d6f26a670f2642 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/Probabilistic/ProbabilisticPipingOutputContextTreeNodeInfoTest.cs (.../ProbabilisticPipingOutputContextTreeNodeInfoTest.cs) (revision 3da4206f066cec3031bae10eea6353ae4abc7a16) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/Probabilistic/ProbabilisticPipingOutputContextTreeNodeInfoTest.cs (.../ProbabilisticPipingOutputContextTreeNodeInfoTest.cs) (revision fccca5cdac7de91489bdca3780d6f26a670f2642) @@ -61,7 +61,7 @@ Assert.IsNull(info.ContextMenuStrip); Assert.IsNull(info.EnsureVisibleOnCreate); Assert.IsNull(info.ExpandOnCreate); - Assert.IsNull(info.ChildNodeObjects); + Assert.IsNotNull(info.ChildNodeObjects); Assert.IsNull(info.CanRename); Assert.IsNull(info.OnNodeRenamed); Assert.IsNull(info.CanRemove); @@ -125,5 +125,30 @@ // Assert TestHelper.AssertImagesAreEqual(RiskeerCommonFormsResources.CalculationOutputFolderIcon, image); } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void ChildNodeObjects_Always_ReturnsCollectionWithOutputObjects(bool hasOutput) + { + // Setup + var calculation = new ProbabilisticPipingCalculation(new GeneralPipingInput()) + { + Output = hasOutput ? PipingTestDataGenerator.GetRandomProbabilisticPipingOutput() : null + }; + var context = new ProbabilisticPipingOutputContext(calculation); + + // Call + object[] children = info.ChildNodeObjects(context).ToArray(); + + // Assert + Assert.AreEqual(2, children.Length); + + var profileSpecificOutputContext = children[0] as ProbabilisticPipingProfileSpecificOutputContext; + Assert.AreSame(calculation, profileSpecificOutputContext.WrappedData); + + var sectionSpecificOutputContext = children[1] as ProbabilisticPipingSectionSpecificOutputContext; + Assert.AreSame(calculation, sectionSpecificOutputContext.WrappedData); + } } } \ No newline at end of file