using System.Collections.Generic; using System.ComponentModel; using Deltares.Geotechnics; using Deltares.Standard; using Deltares.Standard.Data; using Deltares.Standard.EventPublisher; using Deltares.Standard.Language; using Deltares.Standard.Validation; namespace Deltares.DeltaModel { /// /// Revetment profile. /// TODO: Comment /// public class BlockRevetmentProfile : ISegmentDescription { private readonly DelegatedList revetmentLayers = new DelegatedList(); private string name = "Revetment profile"; /// /// Initializes a new instance of the class, adds the method AddRevetmentLayer to /// the DelegatedList revetmentLayers. /// TODO: Comment /// public BlockRevetmentProfile() { revetmentLayers.AddMethod = AddRevetmentLayer; revetmentLayers.Add(new BlockRevetmentLayer(new BlockRevetmentTopLayerData(), true, BlockRevetmentLayerType.TopLayer)); // top layer revetmentLayers.Add(new BlockRevetmentLayer(new Geotextile(), false, BlockRevetmentLayerType.GeoTextile)); // geotextile between top layer and first filter layer revetmentLayers.Add(new BlockRevetmentLayer(new BlockRevetmentMaterial { Name = LocalizationManager.GetTranslatedText(typeof(BlockRevetmentLayerType), BlockRevetmentLayerType.Filter.ToString()), ShowD90 = false }, false, BlockRevetmentLayerType.Filter)); // first filter layer revetmentLayers.Add(new BlockRevetmentLayer(new BlockRevetmentMaterial { Name = LocalizationManager.GetTranslatedText(typeof(BlockRevetmentLayerType), BlockRevetmentLayerType.Filter.ToString()), ShowD90 = false }, false, BlockRevetmentLayerType.Filter)); // second filter layer revetmentLayers.Add(new BlockRevetmentLayer(new Geotextile(), false, BlockRevetmentLayerType.GeoTextile)); // geo textile revetmentLayers.Add(new BlockRevetmentLayer(null, false, BlockRevetmentLayerType.Brick)); // vlij laag revetmentLayers.Add(new BlockRevetmentLayer(null, false, BlockRevetmentLayerType.SandAsphalt)); // zand asfalt laag revetmentLayers.Add(new BlockRevetmentLayer(new BlockRevetmentMaterial { Name = LocalizationManager.GetTranslatedText(typeof(BlockRevetmentLayerType), BlockRevetmentLayerType.Clay.ToString()), ShowMaterialType = false, ShowPorosity = false, ShowClayPosition = true }, false, BlockRevetmentLayerType.Clay)); // clay layer revetmentLayers.Add(new BlockRevetmentLayer(new BlockRevetmentMaterial { Name = LocalizationManager.GetTranslatedText(typeof(BlockRevetmentLayerType), BlockRevetmentLayerType.Sand.ToString()), ShowMaterialType = false, ShowPorosity = false, ShowClayPosition = false }, false, BlockRevetmentLayerType.Sand)); // sand layer } /// /// Container of type generic of data classes: RevetmentToplayerdata, /// RevetmentGeotextiledata, RevetmentSoildata(filter,clay,sand). /// [ReadOnly(true)] [Validate] public IList RevetmentLayers { get { return revetmentLayers; } } public string Name { get { return name; } set { this.SetAndNotify2(out name, value, x => x.Name); } } /// /// Returns a that represents this instance. /// /// /// "Revetment Profile". /// public override string ToString() { return Name; } /// /// Creates a deep clone of this /// /// A deep clone public ISegmentDescription Clone() { var clone = new BlockRevetmentProfile { name = name }; // Clear the default revetment layers clone.RevetmentLayers.Clear(); // Clone the revetment layers foreach (var revetmentLayer in RevetmentLayers) { clone.revetmentLayers.Add(revetmentLayer.Clone()); } return clone; } /// /// Adds the revetment layer. /// /// The revetment layer. private void AddRevetmentLayer(BlockRevetmentLayer blockRevetmentLayer) { blockRevetmentLayer.BlockRevetmentProfile = this; } } }