Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -rc73100fd8408a2865d6fb32bd17608502686b605 -r87fcb2097e3a58e611c0de6913cb48851006f7af --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision c73100fd8408a2865d6fb32bd17608502686b605) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 87fcb2097e3a58e611c0de6913cb48851006f7af) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections; using System.Collections.Generic; using System.Drawing; @@ -80,8 +81,16 @@ GetViewData = context => context.WrappedData, AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism }; - } + yield return new ViewInfo + { + Image = RingtoetsCommonFormsResources.GenericInputOutputIcon, + GetViewName = (view, input) => GrassCoverErosionInwardsFormsResources.GrassCoverErosionInwardsInputContext_NodeDisplayName, + GetViewData = context => context.WrappedData, + CloseForData = CloseInputViewForData + }; + } + public override IEnumerable GetTreeNodeInfos() { yield return RingtoetsTreeNodeInfoFactory.CreateFailureMechanismContextTreeNodeInfo( @@ -151,6 +160,8 @@ Text = inputContext => GrassCoverErosionInwardsFormsResources.GrassCoverErosionInwardsInputContext_NodeDisplayName, Image = inputContext => RingtoetsCommonFormsResources.GenericInputOutputIcon, ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl) + .AddOpenItem() + .AddSeparator() .AddImportItem() .AddExportItem() .AddSeparator() @@ -225,6 +236,54 @@ #endregion + #region GrassCoverErosionInwardsInputView ViewInfo + + private bool CloseInputViewForData(GrassCoverErosionInwardsInputView view, object o) + { + var calculationContext = o as GrassCoverErosionInwardsCalculationContext; + if (calculationContext != null) + { + return ReferenceEquals(view.Data, calculationContext.WrappedData.InputParameters); + } + + IEnumerable calculationInputs = null; + + var calculationGroupContext = o as GrassCoverErosionInwardsCalculationGroupContext; + if (calculationGroupContext != null) + { + calculationInputs = calculationGroupContext.WrappedData.GetCalculations() + .OfType() + .Select(c => c.InputParameters); + } + + var failureMechanismContext = o as GrassCoverErosionInwardsFailureMechanismContext; + if (failureMechanismContext != null) + { + calculationInputs = failureMechanismContext.WrappedData.CalculationsGroup.GetCalculations() + .OfType() + .Select(c => c.InputParameters); + } + + var assessmentSection = o as IAssessmentSection; + if (assessmentSection != null) + { + var failureMechanism = assessmentSection.GetFailureMechanisms() + .OfType() + .FirstOrDefault(); + + if (failureMechanism != null) + { + calculationInputs = failureMechanism.CalculationsGroup.GetCalculations() + .OfType() + .Select(c => c.InputParameters); + } + } + + return calculationInputs != null && calculationInputs.Any(ci => ReferenceEquals(view.Data, ci)); + } + + #endregion + #region EmptyProbabilityAssessmentOutput TreeNodeInfo private ContextMenuStrip EmptyProbabilityAssessmentOutputContextMenuStrip(EmptyProbabilityAssessmentOutput output, object parentData, TreeViewControl treeViewControl)