Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PropertyClasses/ClosingStructuresFailureMechanismProperties.cs =================================================================== diff -u -rb9a59dd5f30c8de46d0cabb4e1609c09176a4246 -r5f8541d2a46730d67fc2d859caa6de2921bbc820 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PropertyClasses/ClosingStructuresFailureMechanismProperties.cs (.../ClosingStructuresFailureMechanismProperties.cs) (revision b9a59dd5f30c8de46d0cabb4e1609c09176a4246) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PropertyClasses/ClosingStructuresFailureMechanismProperties.cs (.../ClosingStructuresFailureMechanismProperties.cs) (revision 5f8541d2a46730d67fc2d859caa6de2921bbc820) @@ -19,7 +19,9 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.ComponentModel; +using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Gui.Attributes; using Core.Common.Gui.PropertyBag; @@ -49,6 +51,30 @@ private const int modelFactorSubCriticalFlowPropertyIndex = 9; private const int modelFactorInflowVolumePropertyIndex = 10; + private readonly IFailureMechanismPropertyChangeHandler propertyChangeHandler; + + /// + /// Creates a new instance of . + /// + /// The instance to show the properties of. + /// Handler responsible for handling effects of a property change. + /// Thrown when any input parameter is null. + public ClosingStructuresFailureMechanismProperties( + ClosingStructuresFailureMechanism data, + IFailureMechanismPropertyChangeHandler handler) + { + if (data == null) + { + throw new ArgumentNullException("data"); + } + if (handler == null) + { + throw new ArgumentNullException("handler"); + } + Data = data; + propertyChangeHandler = handler; + } + #region Length effect parameters [PropertyOrder(cPropertyIndex)] @@ -75,8 +101,11 @@ } set { - data.GeneralInput.N2A = value; - data.NotifyObservers(); + if (propertyChangeHandler.ConfirmPropertyChange()) + { + data.GeneralInput.N2A = value; + ClearOutputAndNotifyObservers(); + } } } @@ -197,5 +226,14 @@ } #endregion + + private void ClearOutputAndNotifyObservers() + { + foreach (IObservable changedObject in propertyChangeHandler.PropertyChanged(data)) + { + changedObject.NotifyObservers(); + } + data.NotifyObservers(); + } } } \ No newline at end of file