Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs =================================================================== diff -u -re680912956b5bcd78b125cca9fc4d79f664ba80e -r26e6c71dacff987569f34296db2987aabf6d4b84 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision e680912956b5bcd78b125cca9fc4d79f664ba80e) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 26e6c71dacff987569f34296db2987aabf6d4b84) @@ -21,6 +21,7 @@ using System.Collections; using System.Collections.Generic; +using System.Linq; using System.Windows.Forms; using Core.Common.Controls.TreeView; using Core.Common.Gui.Plugin; @@ -29,6 +30,7 @@ using Ringtoets.Common.Forms.TreeNodeInfos; using Ringtoets.DuneErosion.Data; using Ringtoets.DuneErosion.Forms.PresentationObjects; +using Ringtoets.DuneErosion.Forms.Views; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.DuneErosion.Plugin @@ -46,10 +48,36 @@ FailureMechanismEnabledContextMenuStrip, FailureMechanismDisabledContextMenuStrip ); + + yield return new TreeNodeInfo> + { + Text = context => RingtoetsCommonFormsResources.FailureMechanism_AssessmentResult_DisplayName, + Image = context => RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, + ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl) + .AddOpenItem() + .Build() + }; } - #region DuneErosionFailureMechanismContext TreeNodeInfo + public override IEnumerable GetViewInfos() + { + yield return new ViewInfo< + FailureMechanismSectionResultContext, + IEnumerable, + DuneErosionResultView> + { + GetViewName = (view, results) => RingtoetsCommonFormsResources.FailureMechanism_AssessmentResult_DisplayName, + Image = RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, + CloseForData = CloseFailureMechanismResultViewForData, + GetViewData = context => context.WrappedData, + AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism + }; + } + #region TreeNodeInfo + + #region failureMechanismContext TreeNodeInfo + private static object[] FailureMechanismEnabledChildNodeObjects(DuneErosionFailureMechanismContext failureMechanismContext) { DuneErosionFailureMechanism wrappedData = failureMechanismContext.WrappedData; @@ -87,15 +115,15 @@ }; } - private ContextMenuStrip FailureMechanismEnabledContextMenuStrip(DuneErosionFailureMechanismContext closingStructuresFailureMechanismContext, + private ContextMenuStrip FailureMechanismEnabledContextMenuStrip(DuneErosionFailureMechanismContext failureMechanismContext, object parentData, TreeViewControl treeViewControl) { - var builder = new RingtoetsContextMenuBuilder(Gui.Get(closingStructuresFailureMechanismContext, treeViewControl)); + var builder = new RingtoetsContextMenuBuilder(Gui.Get(failureMechanismContext, treeViewControl)); return builder.AddOpenItem() .AddSeparator() - .AddToggleRelevancyOfFailureMechanismItem(closingStructuresFailureMechanismContext, RemoveAllViewsForItem) + .AddToggleRelevancyOfFailureMechanismItem(failureMechanismContext, RemoveAllViewsForItem) .AddSeparator() .AddExpandAllItem() .AddCollapseAllItem() @@ -125,5 +153,34 @@ } #endregion + + #endregion + + #region ViewInfo + + #region DuneErosionResultView ViewInfo + + private static bool CloseFailureMechanismResultViewForData(DuneErosionResultView view, object o) + { + var assessmentSection = o as IAssessmentSection; + var failureMechanism = o as DuneErosionFailureMechanism; + var failureMechanismContext = o as IFailureMechanismContext; + if (assessmentSection != null) + { + return assessmentSection + .GetFailureMechanisms() + .OfType() + .Any(fm => ReferenceEquals(view.Data, fm.SectionResults)); + } + if (failureMechanismContext != null) + { + failureMechanism = failureMechanismContext.WrappedData; + } + return failureMechanism != null && ReferenceEquals(view.Data, failureMechanism.SectionResults); + } + + #endregion + + #endregion } } \ No newline at end of file