// Copyright (C) Stichting Deltares 2016. 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.ComponentModel;
using Core.Common.Base.Data;
using Core.Common.Base.Geometry;
using Core.Common.Gui.Attributes;
using Core.Common.Gui.PropertyBag;
using Core.Common.Utils;
using Core.Common.Utils.Attributes;
using Ringtoets.Common.Forms.Helpers;
using Ringtoets.Common.Forms.PropertyClasses;
using Ringtoets.StabilityPointStructures.Data;
using Ringtoets.StabilityPointStructures.Forms.Properties;
using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
namespace Ringtoets.StabilityPointStructures.Forms.PropertyClasses
{
///
/// ViewModel of for properties panel.
///
public class StabilityPointStructureProperties : ObjectProperties
{
private const int namePropertyIndex = 1;
private const int locationPropertyIndex = 2;
private const int insideWaterLevelPropertyIndex = 3;
private const int insideWaterLevelFailureConstructionPropertyIndex = 4;
private const int flowVelocityStructureClosablePropertyIndex = 5;
private const int structureNormalOrientationPropertyIndex = 6;
private const int stabilityPointStructureInflowModelTypePropertyIndex = 7;
private const int widthFlowAperturesPropertyIndex = 8;
private const int areaFlowAperturesPropertyIndex = 9;
private const int flowWidthAtBottomProtectionPropertyIndex = 10;
private const int storageStructureAreaPropertyIndex = 11;
private const int allowedLevelIncreaseStoragePropertyIndex = 12;
private const int levelCrestStructurePropertyIndex = 13;
private const int thresholdHeightOpenWeirPropertyIndex = 14;
private const int criticalOvertoppingDischargePropertyIndex = 15;
private const int constructiveStrengthLinearLoadModelPropertyIndex = 16;
private const int constructiveStrengthQuadraticLoadModelPropertyIndex = 17;
private const int bankWidthPropertyIndex = 18;
private const int evaluationLevelPropertyIndex = 19;
private const int verticalDistancePropertyIndex = 20;
private const int failureProbabilityRepairClosurePropertyIndex = 21;
private const int failureCollisionEnergyPropertyIndex = 22;
private const int shipMassPropertyIndex = 23;
private const int shipVelocityPropertyIndex = 24;
private const int levellingCountPropertyIndex = 25;
private const int probabilityCollisionSecondaryStructurePropertyIndex = 26;
private const int stabilityLinearLoadModelPropertyIndex = 27;
private const int stabilityQuadraticLoadModelPropertyIndex = 28;
#region Critical values
[PropertyOrder(flowVelocityStructureClosablePropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_CriticalValues))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_FlowVelocityStructureClosable_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_FlowVelocityStructureClosable_Description))]
public VariationCoefficientNormalDistributionProperties FlowVelocityStructureClosable
{
get
{
return new VariationCoefficientNormalDistributionProperties
{
Data = data.FlowVelocityStructureClosable
};
}
}
#endregion
#region General
[PropertyOrder(namePropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_General))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_Name_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_Name_Description))]
public string Name
{
get
{
return data.Name;
}
}
[PropertyOrder(locationPropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_General))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_Location_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_Location_Description))]
public Point2D Location
{
get
{
return new Point2D(new RoundedDouble(0, data.Location.X),
new RoundedDouble(0, data.Location.Y));
}
}
#endregion
#region HydraulicData
[PropertyOrder(insideWaterLevelPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_HydraulicData))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_InsideWaterLevel_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_InsideWaterLevel_Description))]
public NormalDistributionProperties InsideWaterLevel
{
get
{
return new NormalDistributionProperties
{
Data = data.InsideWaterLevel
};
}
}
[PropertyOrder(insideWaterLevelFailureConstructionPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_HydraulicData))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_InsideWaterLevelFailureConstruction_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_InsideWaterLevelFailureConstruction_Description))]
public NormalDistributionProperties InsideWaterLevelFailureConstruction
{
get
{
return new NormalDistributionProperties
{
Data = data.InsideWaterLevelFailureConstruction
};
}
}
#endregion
#region Schematization
[PropertyOrder(structureNormalOrientationPropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_StructureNormalOrientation_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_StructureNormalOrientation_Description))]
public RoundedDouble StructureNormalOrientation
{
get
{
return data.StructureNormalOrientation;
}
}
[PropertyOrder(stabilityPointStructureInflowModelTypePropertyIndex)]
[TypeConverter(typeof(EnumTypeConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_InflowModelType_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_InflowModelType_Description))]
public StabilityPointStructureInflowModelType InflowModelType
{
get
{
return data.InflowModelType;
}
}
[PropertyOrder(widthFlowAperturesPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_WidthFlowApertures_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_WidthFlowApertures_Description))]
public NormalDistributionProperties WidthFlowApertures
{
get
{
return new NormalDistributionProperties
{
Data = data.WidthFlowApertures
};
}
}
[PropertyOrder(areaFlowAperturesPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_AreaFlowApertures_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_AreaFlowApertures_Description))]
public LogNormalDistributionProperties AreaFlowApertures
{
get
{
return new LogNormalDistributionProperties
{
Data = data.AreaFlowApertures
};
}
}
[PropertyOrder(flowWidthAtBottomProtectionPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_FlowWidthAtBottomProtection_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_FlowWidthAtBottomProtection_Description))]
public LogNormalDistributionProperties FlowWidthAtBottomProtection
{
get
{
return new LogNormalDistributionProperties
{
Data = data.FlowWidthAtBottomProtection
};
}
}
[PropertyOrder(storageStructureAreaPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_StorageStructureArea_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_StorageStructureArea_Description))]
public VariationCoefficientLogNormalDistributionProperties StorageStructureArea
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.StorageStructureArea
};
}
}
[PropertyOrder(allowedLevelIncreaseStoragePropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_AllowedLevelIncreaseStorage_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_AllowedLevelIncreaseStorage_Description))]
public LogNormalDistributionProperties AllowedLevelIncreaseStorage
{
get
{
return new LogNormalDistributionProperties
{
Data = data.AllowedLevelIncreaseStorage
};
}
}
[PropertyOrder(levelCrestStructurePropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_LevelCrestStructure_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_LevelCrestStructure_Description))]
public NormalDistributionProperties LevelCrestStructure
{
get
{
return new NormalDistributionProperties
{
Data = data.LevelCrestStructure
};
}
}
[PropertyOrder(thresholdHeightOpenWeirPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_ThresholdHeightOpenWeir_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_ThresholdHeightOpenWeir_Description))]
public NormalDistributionProperties ThresholdHeightOpenWeir
{
get
{
return new NormalDistributionProperties
{
Data = data.ThresholdHeightOpenWeir
};
}
}
[PropertyOrder(criticalOvertoppingDischargePropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_CriticalOvertoppingDischarge_DisplayName))]
[ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Structure_CriticalOvertoppingDischarge_Description))]
public VariationCoefficientLogNormalDistributionProperties CriticalOvertoppingDischarge
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.CriticalOvertoppingDischarge
};
}
}
[PropertyOrder(constructiveStrengthLinearLoadModelPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_ConstructiveStrengthLinearLoadModel_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_ConstructiveStrengthLinearLoadModel_Description))]
public VariationCoefficientLogNormalDistributionProperties ConstructiveStrengthLinearLoadModel
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.ConstructiveStrengthLinearLoadModel
};
}
}
[PropertyOrder(constructiveStrengthQuadraticLoadModelPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_ConstructiveStrengthQuadraticLoadModel_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_ConstructiveStrengthQuadraticLoadModel_Description))]
public VariationCoefficientLogNormalDistributionProperties ConstructiveStrengthQuadraticLoadModel
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.ConstructiveStrengthQuadraticLoadModel
};
}
}
[PropertyOrder(bankWidthPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_BankWidth_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_BankWidth_Description))]
public NormalDistributionProperties BankWidth
{
get
{
return new NormalDistributionProperties
{
Data = data.BankWidth
};
}
}
[PropertyOrder(evaluationLevelPropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_EvaluationLevel_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_EvaluationLevel_Description))]
public RoundedDouble EvaluationLevel
{
get
{
return data.EvaluationLevel;
}
}
[PropertyOrder(verticalDistancePropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_VerticalDistance_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_VerticalDistance_Description))]
public RoundedDouble VerticalDistance
{
get
{
return data.VerticalDistance;
}
}
[PropertyOrder(failureProbabilityRepairClosurePropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_FailureProbabilityRepairClosure_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_FailureProbabilityRepairClosure_Description))]
public string FailureProbabilityRepairClosure
{
get
{
return ProbabilityFormattingHelper.Format(data.FailureProbabilityRepairClosure);
}
}
[PropertyOrder(failureCollisionEnergyPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_FailureCollisionEnergy_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_FailureCollisionEnergy_Description))]
public VariationCoefficientLogNormalDistributionProperties FailureCollisionEnergy
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.FailureCollisionEnergy
};
}
}
[PropertyOrder(shipMassPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_ShipMass_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_ShipMass_Description))]
public VariationCoefficientNormalDistributionProperties ShipMass
{
get
{
return new VariationCoefficientNormalDistributionProperties
{
Data = data.ShipMass
};
}
}
[PropertyOrder(shipVelocityPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_ShipVelocity_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_ShipVelocity_Description))]
public VariationCoefficientNormalDistributionProperties ShipVelocity
{
get
{
return new VariationCoefficientNormalDistributionProperties
{
Data = data.ShipVelocity
};
}
}
[PropertyOrder(levellingCountPropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_LevellingCount_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_LevellingCount_Description))]
public int LevellingCount
{
get
{
return data.LevellingCount;
}
}
[PropertyOrder(probabilityCollisionSecondaryStructurePropertyIndex)]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_ProbabilityCollisionSecondaryStructure_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_ProbabilityCollisionSecondaryStructure_Description))]
public string ProbabilityCollisionSecondaryStructure
{
get
{
return ProbabilityFormattingHelper.Format(data.ProbabilityCollisionSecondaryStructure);
}
}
[PropertyOrder(stabilityLinearLoadModelPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_StabilityLinearLoadModel_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_StabilityLinearLoadModel_Description))]
public VariationCoefficientLogNormalDistributionProperties StabilityLinearLoadModel
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.StabilityLinearLoadModel
};
}
}
[PropertyOrder(stabilityQuadraticLoadModelPropertyIndex)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Schematization))]
[ResourcesDisplayName(typeof(Resources), nameof(Resources.Structure_StabilityQuadraticLoadModel_DisplayName))]
[ResourcesDescription(typeof(Resources), nameof(Resources.Structure_StabilityQuadraticLoadModel_Description))]
public VariationCoefficientLogNormalDistributionProperties StabilityQuadraticLoadModel
{
get
{
return new VariationCoefficientLogNormalDistributionProperties
{
Data = data.StabilityQuadraticLoadModel
};
}
}
#endregion
}
}