using System.Windows.Forms; using Deltares.Geotechnics; using Deltares.Geotechnics.Forms; using Deltares.Standard.EventPublisher; using Deltares.Standard.Forms; using Deltares.Standard.Forms.DExpress; namespace Deltares.DSoilModel.Forms { /// /// same as SoilStressCurveControl, except StressCurve is BondStressCurve /// public partial class SoilBondStressCurveControl : UserControl, IPropertyControl, IReloadableUI { private object selectedObject; private Soil soil; /// /// Initializes a new instance of the SoilSurfacePropertyControl class /// public SoilBondStressCurveControl() { InitializeComponent(); Name = "Bond stress table"; BindSupport.BindTextAndValue(this, BondStressTableLabel, BondStressTableValue, typeof(Soil), "BondStressTable"); BondStressCurveGroup.Text = "Stress table"; LocalizationSupport.RegisterAndTranslate(typeof(StressCurveControl), BondStressCurveGroup); FormsSupport.RepairRightAnchoredControls(this); DataEventPublisher.OnAfterChange += DataEventPublisher_OnAfterChange; } #region IPropertyControl Members /// /// Gets or sets the selected object /// public object SelectedObject { get { return selectedObject; } set { selectedObject = value; var selectedSoil = selectedObject as Soil; var selectedSoilLayer = selectedObject as SoilLayer; if (null != selectedSoil) { soil = selectedSoil; } else if (null != selectedSoilLayer) { soil = selectedSoilLayer.Soil; } BindSupport.Assign(this, soil); BondStressTableControl.SelectedObject = soil != null ? soil.BondStressTable : null; } } public bool IsVisible { get { return soil != null && soil.IsVisible("BondStressTable"); } } #endregion #region IReloadableUI Members /// /// registers the control to reload manager /// /// manager to reload the control on culture change public void RegisterUIComponent(IReloadManager reloadManager) { // this.materialEditor.RegisterUIComponent(reloadManager); reloadManager.AddComponent(this, null); } /// /// reloads the dialog on culture change /// public void Reload() { Refresh(); } public void UpdateData(params object[] models) {} #endregion private void DataEventPublisher_OnAfterChange(object sender, PublishEventArgs e) { if ((sender == soil) && (e.Property == "BondStressTable")) { BondStressTableControl.SelectedObject = soil.BondStressTable; } if (sender == soil && selectedObject != soil) { DataEventPublisher.AfterChange(selectedObject); // to enforce update } } } }