using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Reflection; using DevComponents.DotNetBar.Charts; namespace DevComponents.Charts.Design { public class IndicatorCollectionEditor : BaseCollectionEditor { #region Private variables private ChartSeries _ChartSeries; #endregion public IndicatorCollectionEditor(Type type) : base(type) { } #region EditValue public override object EditValue( ITypeDescriptorContext context, IServiceProvider provider, object value) { _ChartSeries = context.Instance as ChartSeries; return (base.EditValue(context, provider, value)); } #endregion #region CreateInstance protected override object CreateInstance(Type itemType) { if (itemType == typeof(RegressionLine)) { RegressionLine regLine = (RegressionLine)base.CreateInstance(itemType); if (_ChartSeries != null) regLine.Name = _ChartSeries.ChartIndicators.GetUniqueName("RegLine"); return (regLine); } if (itemType == typeof(TrendLine)) { TrendLine trendLine = (TrendLine)base.CreateInstance(itemType); if (_ChartSeries != null) trendLine.Name = _ChartSeries.ChartIndicators.GetUniqueName("TrendLine"); return (trendLine); } return (base.CreateInstance(itemType)); } #endregion #region CopyButton_Click protected override void CopyButton_Click(object sender, EventArgs e) { ChartIndicator item = ChartItem as ChartIndicator; if (item != null) { if (AddButton != null) { ChartControlDesigner ccd = GetDesigner(_ChartSeries.ChartControl); ChartIndicatorCollection cic = _ChartSeries.ChartIndicators; ccd.InCopyItem = true; if (item is RegressionLine) _ItemTypes[0] = typeof(RegressionLine); try { AddButton.PerformClick(); ChartIndicator clone = (ChartIndicator)cic[cic.Count - 1]; string name = clone.Name; item.CopyTo(clone); clone.Name = name; } finally { if (item is RegressionLine) _ItemTypes[0] = typeof(TrendLine); ccd.InCopyItem = false; } } } } #endregion #region CreateCollectionItemType protected override Type CreateCollectionItemType() { return typeof(ChartIndicator); } #endregion #region CreateNewItemTypes private Type[] _ItemTypes = new Type[] { typeof(TrendLine), typeof(RegressionLine), }; protected override Type[] CreateNewItemTypes() { return (_ItemTypes); } #endregion } }