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