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;
}
}
}