113 lines
2.8 KiB
C#
113 lines
2.8 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using DevComponents.DotNetBar.Charts;
|
|
|
|
namespace DevComponents.Charts.Design
|
|
{
|
|
public class PieReferenceCollectionEditor : BaseCollectionEditor
|
|
{
|
|
#region Private variables
|
|
|
|
private SliceVisualLayout _SliceLayout;
|
|
|
|
#endregion
|
|
|
|
public PieReferenceCollectionEditor(Type type)
|
|
: base(type)
|
|
{
|
|
}
|
|
|
|
#region EditValue
|
|
|
|
public override object EditValue(
|
|
ITypeDescriptorContext context, IServiceProvider provider, object value)
|
|
{
|
|
_SliceLayout = context.Instance as SliceVisualLayout;
|
|
|
|
IComponentChangeService cs = BeforeEditValue(context);
|
|
|
|
object retval = value;
|
|
|
|
try
|
|
{
|
|
retval = base.EditValue(context, provider, value);
|
|
}
|
|
finally
|
|
{
|
|
AfterEditValue(context, cs);
|
|
}
|
|
|
|
return (retval);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CreateInstance
|
|
|
|
protected override object CreateInstance(Type itemType)
|
|
{
|
|
if (itemType == typeof(PieReferenceLine))
|
|
{
|
|
PieReferenceLine line = (PieReferenceLine)base.CreateInstance(itemType);
|
|
|
|
line.Name = _SliceLayout.ReferenceLines.GetUniqueName();
|
|
|
|
return (line);
|
|
}
|
|
|
|
return (base.CreateInstance(itemType));
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CopyButton_Click
|
|
|
|
protected override void CopyButton_Click(object sender, EventArgs e)
|
|
{
|
|
PieReferenceLine item = ChartItem as PieReferenceLine;
|
|
|
|
if (item != null)
|
|
{
|
|
if (AddButton != null)
|
|
{
|
|
ChartVisualElement cve = _SliceLayout.Parent as ChartVisualElement;
|
|
|
|
ChartControlDesigner ccd = (cve != null) ? GetDesigner(cve.ChartControl) : null;
|
|
|
|
if (ccd != null)
|
|
ccd.InCopyItem = true;
|
|
|
|
try
|
|
{
|
|
AddButton.PerformClick();
|
|
|
|
PieReferenceLineCollection rlc = _SliceLayout.ReferenceLines;
|
|
PieReferenceLine clone = rlc[rlc.Count - 1];
|
|
|
|
string name = clone.Name;
|
|
item.CopyTo(clone);
|
|
clone.Name = name;
|
|
}
|
|
finally
|
|
{
|
|
if (ccd != null)
|
|
ccd.InCopyItem = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CreateCollectionItemType
|
|
|
|
protected override Type CreateCollectionItemType()
|
|
{
|
|
return typeof(PieReferenceLine);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|