// 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.ComponentModel; using System.Drawing; using Core.Common.Controls.DataGrid; using Core.Common.Util; using Ringtoets.AssemblyTool.Data; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.TypeConverters; namespace Ringtoets.Integration.Forms.Views { /// /// This class represents a row displaying the properties of a /// and its assembly result. /// public abstract class FailureMechanismAssemblyResultRowBase : IHasColumnStateDefinitions { private const int categoryIndex = 3; private readonly IFailureMechanism failureMechanism; /// /// Creates a new instance of . /// /// The to wrap so that it can be displayed as a row. /// Thrown when any parameters is null. protected FailureMechanismAssemblyResultRowBase(IFailureMechanism failureMechanism) { if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); } this.failureMechanism = failureMechanism; ColumnStateDefinitions = new Dictionary(); CreateColumnStateDefinitions(); } /// /// Gets the name of the failure mechanism. /// public string Name { get { return failureMechanism.Name; } } /// /// Gets the code of the failure mechanism. /// public string Code { get { return failureMechanism.Code; } } /// /// Gets the group of the failure mechanism. /// public int Group { get { return failureMechanism.Group; } } /// /// Gets the group of the failure mechanism assembly. /// [TypeConverter(typeof(EnumTypeConverter))] public FailureMechanismAssemblyCategoryGroup CategoryGroup { get; protected set; } /// /// Gets the probability of the failure mechanism assembly. /// [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] public double Probablity { get; protected set; } public IDictionary ColumnStateDefinitions { get; } /// /// Updates all data and states in the row. /// public void Update() { ResetErrorTexts(); TryGetDerivedData(); SetCategoryGroupColumnStateDefinition(); } /// /// Gets the derived data for the failure mechanism. /// protected abstract void TryGetDerivedData(); protected DataGridViewColumnStateDefinition GetCategoryGroupColumnStateDefinition() { return ColumnStateDefinitions[categoryIndex]; } private void SetCategoryGroupColumnStateDefinition() { GetCategoryGroupColumnStateDefinition().Style = new CellStyle( Color.FromKnownColor(KnownColor.ControlText), AssemblyCategoryGroupColorHelper.GetFailureMechanismAssemblyCategoryGroupColor(CategoryGroup)); } private void CreateColumnStateDefinitions() { ColumnStateDefinitions.Add(categoryIndex, new DataGridViewColumnStateDefinition { ReadOnly = true }); } private void ResetErrorTexts() { ColumnStateDefinitions[categoryIndex].ErrorText = string.Empty; } } }