Index: Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseBreakWater.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseBreakWater.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseBreakWater.cs (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -0,0 +1,41 @@ +// 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 Core.Common.Base; + +namespace Ringtoets.Common.Data.DikeProfiles +{ + /// + /// This interface describes properties for the usage of . + /// + public interface IUseBreakWater : IObservable + { + /// + /// Gets or sets whether the needs to be taken into account. + /// + bool UseBreakWater { get; set; } + + /// + /// Gets the . + /// + BreakWater BreakWater { get; } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseForeshore.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseForeshore.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Data/DikeProfiles/IUseForeshore.cs (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -0,0 +1,42 @@ +// 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 Core.Common.Base; +using Core.Common.Base.Data; + +namespace Ringtoets.Common.Data.DikeProfiles +{ + /// + /// This interface describes properties for the usage of . + /// + public interface IUseForeshore: IObservable + { + /// + /// Gets or sets whether the needs to be taken into account. + /// + bool UseForeshore { get; set; } + + /// + /// Gets the geometry of the foreshore. + /// + RoundedPoint2DCollection ForeshoreGeometry { get; } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj =================================================================== diff -u -r238800aea14ad46b711dc0520d9416a05f6693ae -r443fcdbfa5d49c306f76bb12f054c6e6bf859e18 --- Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 238800aea14ad46b711dc0520d9416a05f6693ae) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -46,6 +46,8 @@ + + Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseBreakWaterProperties.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseBreakWaterProperties.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseBreakWaterProperties.cs (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -0,0 +1,131 @@ +// 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; +using System.ComponentModel; +using Core.Common.Base.Data; +using Core.Common.Gui.Attributes; +using Core.Common.Utils; +using Core.Common.Utils.Attributes; +using Core.Common.Utils.Reflection; +using Ringtoets.Common.Data.DikeProfiles; +using Ringtoets.Common.Forms.Properties; + +namespace Ringtoets.Common.Forms.PropertyClasses +{ + /// + /// ViewModel of . + /// + public class UseBreakWaterProperties + { + private const int useBreakWaterPropertyIndex = 1; + private const int breakWaterTypePropertyIndex = 2; + private const int breakWaterHeightPropertyIndex = 3; + private readonly IUseBreakWater data; + private readonly Func useBreakWaterEnabled; + + /// + /// Creates a new instance of . + /// + /// The data to use for the properties. + /// Function to check if should be read-only or not. + /// Thrown if any of the input parameters is null. + public UseBreakWaterProperties(IUseBreakWater useBreakWaterData, Func useBreakWaterEnabled) + { + if (useBreakWaterData == null) + { + throw new ArgumentNullException("useBreakWaterData"); + } + if (useBreakWaterEnabled == null) + { + throw new ArgumentNullException("useBreakWaterEnabled"); + } + data = useBreakWaterData; + this.useBreakWaterEnabled = useBreakWaterEnabled; + } + + [DynamicReadOnly] + [PropertyOrder(useBreakWaterPropertyIndex)] + [ResourcesDisplayName(typeof(Resources), "BreakWater_UseBreakWater_DisplayName")] + [ResourcesDescription(typeof(Resources), "BreakWater_UseBreakWater_Description")] + public bool UseBreakWater + { + get + { + return data.UseBreakWater; + } + set + { + data.UseBreakWater = value; + data.NotifyObservers(); + } + } + + [DynamicReadOnly] + [PropertyOrder(breakWaterTypePropertyIndex)] + [ResourcesDisplayName(typeof(Resources), "BreakWaterType_DisplayName")] + [ResourcesDescription(typeof(Resources), "BreakWaterType_Description")] + [TypeConverter(typeof(EnumTypeConverter))] + public BreakWaterType BreakWaterType + { + get + { + return data.BreakWater == null ? BreakWaterType.Dam : data.BreakWater.Type; + } + set + { + data.BreakWater.Type = value; + data.NotifyObservers(); + } + } + + [DynamicReadOnly] + [PropertyOrder(breakWaterHeightPropertyIndex)] + [ResourcesDisplayName(typeof(Resources), "BreakWaterHeight_DisplayName")] + [ResourcesDescription(typeof(Resources), "BreakWaterHeight_Description")] + public RoundedDouble BreakWaterHeight + { + get + { + return data.BreakWater == null ? (RoundedDouble) double.NaN + : data.BreakWater.Height; + } + set + { + data.BreakWater.Height = value; + data.NotifyObservers(); + } + } + + [DynamicReadOnlyValidationMethod] + public bool DynamicReadOnlyValidationMethod(string propertyName) + { + return !useBreakWaterEnabled() + || !propertyName.Equals(TypeUtils.GetMemberName(i => i.UseBreakWater)) + && !UseBreakWater; + } + + public override string ToString() + { + return string.Empty; + } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseForeshoreProperties.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseForeshoreProperties.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/UseForeshoreProperties.cs (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -0,0 +1,97 @@ +// 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; +using System.ComponentModel; +using System.Linq; +using Core.Common.Base.Geometry; +using Core.Common.Gui.Attributes; +using Core.Common.Gui.Converters; +using Core.Common.Utils.Attributes; +using Ringtoets.Common.Data.DikeProfiles; +using Ringtoets.Common.Forms.Properties; + +namespace Ringtoets.Common.Forms.PropertyClasses +{ + /// + /// ViewModel of . + /// + public class UseForeshoreProperties + { + private const int useForeshorePropertyIndex = 1; + private const int coordinatesPropertyIndex = 2; + private readonly IUseForeshore data; + + /// + /// Creates a new instance of . + /// + /// The data to use for the properties. + /// Thrown if any of is null. + public UseForeshoreProperties(IUseForeshore useForshoreData) + { + if (useForshoreData == null) + { + throw new ArgumentNullException("useForshoreData"); + } + data = useForshoreData; + } + + [DynamicReadOnly] + [PropertyOrder(useForeshorePropertyIndex)] + [ResourcesDisplayName(typeof(Resources), "Foreshore_UseForeshore_DisplayName")] + [ResourcesDescription(typeof(Resources), "Foreshore_UseForeshore_Description")] + public bool UseForeshore + { + get + { + return data.UseForeshore; + } + set + { + data.UseForeshore = value; + data.NotifyObservers(); + } + } + + [PropertyOrder(coordinatesPropertyIndex)] + [TypeConverter(typeof(ExpandableReadOnlyArrayConverter))] + [ResourcesDisplayName(typeof(Resources), "Geometry_Coordinates_DisplayName")] + [ResourcesDescription(typeof(Resources), "Geometry_Coordinates_Description")] + public Point2D[] Coordinates + { + get + { + return data.ForeshoreGeometry == null ? new Point2D[0] : data.ForeshoreGeometry.ToArray(); + } + } + + [DynamicReadOnlyValidationMethod] + public bool DynamicReadOnlyValidationMethod(string propertyName) + { + return data.ForeshoreGeometry == null || data.ForeshoreGeometry.Count() < 2; + } + + public override string ToString() + { + return string.Empty; + } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj =================================================================== diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r443fcdbfa5d49c306f76bb12f054c6e6bf859e18 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj (.../Ringtoets.Common.Forms.csproj) (revision 423010168fe01b2373e9be55f047659911e670f5) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj (.../Ringtoets.Common.Forms.csproj) (revision 443fcdbfa5d49c306f76bb12f054c6e6bf859e18) @@ -74,6 +74,8 @@ + +