Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs =================================================================== diff -u -r02670d8c9fceeaea5f829937a2eb269f3488c6b1 -r277b68e1c58f97f527567f5500be6bc39efacd97 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 02670d8c9fceeaea5f829937a2eb269f3488c6b1) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 277b68e1c58f97f527567f5500be6bc39efacd97) @@ -24,39 +24,33 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Base; -using Core.Common.Controls.DataGrid; using Core.Common.Controls.Views; -using Core.Common.Utils.Reflection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Forms.Helpers; using Ringtoets.GrassCoverErosionInwards.Data; -using Ringtoets.GrassCoverErosionInwards.Forms.Properties; using Ringtoets.GrassCoverErosionInwards.Utils; -using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.GrassCoverErosionInwards.Forms.Views { /// - /// Creates a new instance of . + /// View for configuring scenarios for the grass cover erosion inwards failure mechanism. + /// Shows a grid view where for each failure mechanism section, a calculation within the section + /// can be selected. /// public partial class GrassCoverErosionInwardsScenariosView : UserControl, IView { - private const int calculationsColumnIndex = 1; private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationGroupObserver; private readonly Observer failureMechanismObserver; private GrassCoverErosionInwardsFailureMechanism failureMechanism; private CalculationGroup data; /// - /// Creates a new instance of the class. + /// Creates a new instance of . /// public GrassCoverErosionInwardsScenariosView() { InitializeComponent(); - AddDataGridColumns(); - failureMechanismObserver = new Observer(UpdateDataGridViewDataSource); // The concat is needed to observe the input of calculations in child groups. @@ -121,78 +115,26 @@ base.Dispose(disposing); } - private void AddDataGridColumns() - { - dataGridViewControl.AddTextBoxColumn(TypeUtils.GetMemberName(sr => sr.Name), - RingtoetsCommonFormsResources.FailureMechanismResultView_InitializeDataGridView_Section_name, - true); - - dataGridViewControl.AddComboBoxColumn>( - TypeUtils.GetMemberName(sr => sr.Calculation), - Resources.GrassCoverErosionInwardsScenariosView_AddDataGridColumns_Calculation, - null, - TypeUtils.GetMemberName>(wrapper => wrapper.WrappedObject), - TypeUtils.GetMemberName>(wrapper => wrapper.DisplayName)); - } - private void UpdateDataGridViewDataSource() { - dataGridViewControl.EndEdit(); + scenariosControl.EndEdit(); if (FailureMechanism == null || FailureMechanism.SectionResults == null || data == null || data.Children == null) { - dataGridViewControl.SetDataSource(null); - return; + scenariosControl.ClearDataSource(); } - - using (new SuspendDataGridViewColumnResizes(dataGridViewControl.GetColumnFromIndex(calculationsColumnIndex))) + else { - var columnItems = ((DataGridViewComboBoxColumn) dataGridViewControl.GetColumnFromIndex(calculationsColumnIndex)).Items; - var items = data.GetCalculations().OfType().Select(c => new DataGridViewComboBoxItemWrapper(c)); - SetItemsOnObjectCollection(columnItems, items.Cast().ToArray()); - } + var calculations = data.GetCalculations(); - dataGridViewControl.SetDataSource(FailureMechanism.SectionResults.Select(sectionResult => new GrassCoverErosionInwardsScenarioRow(sectionResult)).ToList()); + Dictionary> caculationsPerSegment = + GrassCoverErosionInwardsHelper.CollectCalculationsPerSegment(failureMechanism.Sections, calculations.OfType()); - using (new SuspendDataGridViewColumnResizes(dataGridViewControl.GetColumnFromIndex(calculationsColumnIndex))) - { - UpdateDataGridViewDataComboBoxesContent(); - } - } + List scenarioRows = + FailureMechanism.SectionResults.Select(sectionResult => new GrassCoverErosionInwardsScenarioRow(sectionResult)).ToList(); - private void UpdateDataGridViewDataComboBoxesContent() - { - Dictionary> calculationsPerSegmentName = - GrassCoverErosionInwardsHelper.CollectCalculationsPerSegment(failureMechanism.Sections, data.GetCalculations().OfType()); - - foreach (DataGridViewRow dataGridViewRow in dataGridViewControl.Rows) - { - FillAvailableCalculationsList(dataGridViewRow, calculationsPerSegmentName); + scenariosControl.UpdateDataGridViewDataSource(calculations, scenarioRows, caculationsPerSegment); } } - - private void FillAvailableCalculationsList(DataGridViewRow dataGridViewRow, Dictionary> calculationsPerSegmentName) - { - var rowData = (GrassCoverErosionInwardsScenarioRow) dataGridViewRow.DataBoundItem; - string sectionName = rowData.Name; - - var items = new List> - { - new DataGridViewComboBoxItemWrapper(null) - }; - if (calculationsPerSegmentName.ContainsKey(sectionName)) - { - items.AddRange(calculationsPerSegmentName[sectionName].Select(c => new DataGridViewComboBoxItemWrapper(c))); - } - - var cell = (DataGridViewComboBoxCell) dataGridViewRow.Cells[calculationsColumnIndex]; - SetItemsOnObjectCollection(cell.Items, items.Cast().ToArray()); - } - - private static void SetItemsOnObjectCollection(DataGridViewComboBoxCell.ObjectCollection objectCollection, object[] comboBoxItems) - { - objectCollection.Clear(); - objectCollection.AddRange(comboBoxItems); - } } } \ No newline at end of file