// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.Collections.Generic;
using System.Drawing;
using Core.Common.Base.Data;
using Core.Common.Controls.DataGrid;
using Ringtoets.AssemblyTool.Data;
using Ringtoets.Common.Forms.Helpers;
using Ringtoets.Integration.Data.Assembly;
namespace Ringtoets.Integration.Forms.Views
{
///
/// This class represents a row displaying the properties of the .
///
public class CombinedFailureMechanismSectionAssemblyResultRow : IHasColumnStateDefinitions
{
private const int totalResultIndex = 2;
private const int pipingIndex = 3;
private const int grassCoverErosionInwardsIndex = 4;
private const int macroStabilityInwardsIndex = 5;
private const int macroStabilityOutwardsIndex = 6;
private const int microstabililityIndex = 7;
private const int stabilityStoneCoverIndex = 8;
private const int waveImpactAsphaltCoverIndex = 9;
private const int waterPressureAsphaltCoverIndex = 10;
private const int grassCoverErosionOutwardsIndex = 11;
private const int grassCoverSlipOffOutwardsIndex = 12;
private const int grassCoverSlipOffInwardsIndex = 13;
private const int heightStructuresIndex = 14;
private const int closingStructuresIndex = 15;
private const int pipingStructureIndex = 16;
private const int stabilityPointStructuresIndex = 17;
private const int strengthStabilityLengthwiseIndex = 18;
private const int duneErosionIndex = 19;
private const int technicalInnovationIndex = 20;
private readonly CombinedFailureMechanismSectionAssemblyResult combinedFailureMechanismSectionAssemblyResult;
///
/// Creates a new instance of .
///
/// The
/// to wrap so that it can be displayed as a row.
/// Thrown when
/// is null.
public CombinedFailureMechanismSectionAssemblyResultRow(
CombinedFailureMechanismSectionAssemblyResult combinedFailureMechanismSectionAssemblyResult)
{
if (combinedFailureMechanismSectionAssemblyResult == null)
{
throw new ArgumentNullException(nameof(combinedFailureMechanismSectionAssemblyResult));
}
this.combinedFailureMechanismSectionAssemblyResult = combinedFailureMechanismSectionAssemblyResult;
ColumnStateDefinitions = new Dictionary();
CreateColumnStateDefinitions();
SetColumnStateDefinitionColors();
}
///
/// Gets the start of the section from the beginning of the reference line.
/// [km]
///
public RoundedDouble SectionStart
{
get
{
return new RoundedDouble(3, combinedFailureMechanismSectionAssemblyResult.SectionStart);
}
}
///
/// Gets the end of the section from the beginning of the reference line.
/// [km]
///
public RoundedDouble SectionEnd
{
get
{
return new RoundedDouble(3, combinedFailureMechanismSectionAssemblyResult.SectionEnd);
}
}
///
/// Gets the total assembly result.
///
public string TotalResult
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.TotalResult);
}
}
///
/// Gets the assembly result for piping.
///
public string Piping
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.Piping);
}
}
///
/// Gets the assembly result for grass cover erosion inwards.
///
public string GrassCoverErosionInwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.GrassCoverErosionInwards);
}
}
///
/// Gets the assembly result for macro stability inwards.
///
public string MacroStabilityInwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.MacroStabilityInwards);
}
}
///
/// Gets the assembly result for macro stability outwards.
///
public string MacroStabilityOutwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.MacroStabilityOutwards);
}
}
///
/// Gets the assembly result for microstability.
///
public string Microstability
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.Microstability);
}
}
///
/// Gets the assembly result for stability stone cover.
///
public string StabilityStoneCover
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.StabilityStoneCover);
}
}
///
/// Gets the assembly result for wave impact asphalt cover.
///
public string WaveImpactAsphaltCover
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.WaveImpactAsphaltCover);
}
}
///
/// Gets the assembly result for water pressure asphalt cover.
///
public string WaterPressureAsphaltCover
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.WaterPressureAsphaltCover);
}
}
///
/// Gets the assembly result for grass cover erosion outwards.
///
public string GrassCoverErosionOutwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.GrassCoverErosionOutwards);
}
}
///
/// Gets the assembly result for grass cover slip off outwards.
///
public string GrassCoverSlipOffOutwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.GrassCoverSlipOffOutwards);
}
}
///
/// Gets the assembly result for grass cover slip off inwards.
///
public string GrassCoverSlipOffInwards
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.GrassCoverSlipOffInwards);
}
}
///
/// Gets the assembly result for height structures.
///
public string HeightStructures
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.HeightStructures);
}
}
///
/// Gets the assembly result for closing structures.
///
public string ClosingStructures
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.ClosingStructures);
}
}
///
/// Gets the assembly result for piping structure.
///
public string PipingStructure
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.PipingStructure);
}
}
///
/// Gets the assembly result for stability point structures.
///
public string StabilityPointStructures
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.StabilityPointStructures);
}
}
///
/// Gets the assembly result for strength stability lengthwise.
///
public string StrengthStabilityLengthwise
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.StrengthStabilityLengthwise);
}
}
///
/// Gets the assembly result for dune erosion.
///
public string DuneErosion
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.DuneErosion);
}
}
///
/// Gets the assembly result for technical innovation.
///
public string TechnicalInnovation
{
get
{
return FailureMechanismSectionAssemblyCategoryGroupHelper.GetCategoryGroupDisplayname(combinedFailureMechanismSectionAssemblyResult.TechnicalInnovation);
}
}
public IDictionary ColumnStateDefinitions { get; }
private void CreateColumnStateDefinitions()
{
ColumnStateDefinitions.Add(totalResultIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(pipingIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(grassCoverErosionInwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(macroStabilityInwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(macroStabilityOutwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(microstabililityIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(stabilityStoneCoverIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(waveImpactAsphaltCoverIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(waterPressureAsphaltCoverIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(grassCoverErosionOutwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(grassCoverSlipOffOutwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(grassCoverSlipOffInwardsIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(heightStructuresIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(closingStructuresIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(pipingStructureIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(stabilityPointStructuresIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(strengthStabilityLengthwiseIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(duneErosionIndex, CreateDefaultDataGridViewColumnStateDefinition());
ColumnStateDefinitions.Add(technicalInnovationIndex, CreateDefaultDataGridViewColumnStateDefinition());
}
private static DataGridViewColumnStateDefinition CreateDefaultDataGridViewColumnStateDefinition()
{
return new DataGridViewColumnStateDefinition
{
ReadOnly = true
};
}
private void SetColumnStateDefinitionColors()
{
ColumnStateDefinitions[totalResultIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.TotalResult);
ColumnStateDefinitions[pipingIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.Piping);
ColumnStateDefinitions[grassCoverErosionInwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.GrassCoverErosionInwards);
ColumnStateDefinitions[macroStabilityInwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.MacroStabilityInwards);
ColumnStateDefinitions[macroStabilityOutwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.MacroStabilityOutwards);
ColumnStateDefinitions[microstabililityIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.Microstability);
ColumnStateDefinitions[stabilityStoneCoverIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.StabilityStoneCover);
ColumnStateDefinitions[waveImpactAsphaltCoverIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.WaveImpactAsphaltCover);
ColumnStateDefinitions[waterPressureAsphaltCoverIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.WaterPressureAsphaltCover);
ColumnStateDefinitions[grassCoverErosionOutwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.GrassCoverErosionOutwards);
ColumnStateDefinitions[grassCoverSlipOffOutwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.GrassCoverSlipOffOutwards);
ColumnStateDefinitions[grassCoverSlipOffInwardsIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.GrassCoverSlipOffInwards);
ColumnStateDefinitions[heightStructuresIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.HeightStructures);
ColumnStateDefinitions[closingStructuresIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.ClosingStructures);
ColumnStateDefinitions[pipingStructureIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.PipingStructure);
ColumnStateDefinitions[stabilityPointStructuresIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.StabilityPointStructures);
ColumnStateDefinitions[strengthStabilityLengthwiseIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.StrengthStabilityLengthwise);
ColumnStateDefinitions[duneErosionIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.DuneErosion);
ColumnStateDefinitions[technicalInnovationIndex].Style = CreateCellStyle(combinedFailureMechanismSectionAssemblyResult.TechnicalInnovation);
}
private static CellStyle CreateCellStyle(FailureMechanismSectionAssemblyCategoryGroup assemblyCategoryGroup)
{
return new CellStyle(Color.FromKnownColor(KnownColor.ControlText),
AssemblyCategoryGroupColorHelper.GetFailureMechanismSectionAssemblyCategoryGroupColor(assemblyCategoryGroup));
}
}
}