78 lines
2.3 KiB
C#

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms.Design;
using DevComponents.DotNetBar.Charts;
namespace DevComponents.Charts.Design
{
public class PivotPointEditor : UITypeEditor
{
#region GetEditStyle
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return (UITypeEditorEditStyle.DropDown);
}
#endregion
#region GetPaintValueSupported
public override bool GetPaintValueSupported(ITypeDescriptorContext context)
{
return (false);
}
#endregion
#region EditValue
public override object EditValue(
ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (provider != null)
{
IWindowsFormsEditorService editorService =
provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
if (editorService != null)
{
PieChart pieChart = context.Instance as PieChart;
if (pieChart != null)
{
double scale = pieChart.OuterRadius;
if (scale >= 1)
{
int n = Math.Min(pieChart.ContentBounds.Width, pieChart.ContentBounds.Height);
scale = (n > 0) ? pieChart.ActualOuterRadius / n : 0;
}
scale /= 2;
PivotPointDropDown pv = new PivotPointDropDown((PointF) value,
scale, pieChart.SubSliceVisualLayout.StartAngle,
pieChart.SubSliceVisualLayout.SweepAngle, editorService, context);
pv.EscapePressed = false;
editorService.DropDownControl(pv);
if (pv.EscapePressed == true)
context.PropertyDescriptor.SetValue(context.Instance, value);
else
return (pv.PivotPoint);
}
}
}
return (base.EditValue(context, provider, value));
}
#endregion
}
}