using System.Collections.Generic; using System.Linq; using Deltares.Geometry; using Deltares.Standard; using Deltares.Standard.Attributes; using Deltares.Standard.EventPublisher; namespace Deltares.Stability { public class SlidingModel : GeometryObject { private readonly List safetyZones = new List(); private readonly List slidingCircles = new List(); private Zone currentZone; private List probabilisticResults = new List(); private RestProfile restProfile = new RestProfile(); private SafeProfile safeProfile = new SafeProfile(); /// /// Gets or sets the currently selected safety zone. /// /// /// The safety zone /// [Impact(Impact.Descriptive)] [XmlOrder(11)] public Zone CurrentZone { get { if (currentZone == null || currentZone.IsEmpty) { currentZone = SafetyZones.Count > 0 ? SafetyZones[0] : Zone.Empty(); } return currentZone; } set { currentZone = value; DataEventPublisher.SelectionChanged(CurrentZone.MinimumSafetyCurve); DataEventPublisher.AfterChange(this, "CurrentZone"); } } [XmlOrder(10)] public List SafetyZones { get { return safetyZones; } } [XmlOrder(12)] public List SlidingCurves { get { return slidingCircles; } } [XmlOrder(20)] public List ProbabilisticResults { get { return probabilisticResults; } set { probabilisticResults = value; } } [XmlOrder(17)] public RestProfile RestProfile { get { return restProfile; } set { restProfile = value; } } [XmlOrder(18)] public SafeProfile SafeProfile { get { return safeProfile; } set { safeProfile = value; } } public void DeleteDrawingObjects() { var safetyCurves = safetyZones .Where(z => z.MinimumSafetyCurve != null) .Select(c => c.MinimumSafetyCurve); foreach (var curve in safetyCurves) { DataEventPublisher.Delete(curve, null); } } public void DeletePreviousDrawingObjects() { DataEventPublisher.Delete(typeof(SlidingModel), null); } } }