using System; using System.Drawing.Design; using System.ComponentModel; using System.Windows.Forms; using FastReport.Gauge; using FastReport.Gauge.Linear; using FastReport.Gauge.Simple; using FastReport.Gauge.Radial; namespace FastReport.TypeEditors { /// /// Provides a user interface for editing an expression. /// internal class PointerEditor : UITypeEditor { /// /// /// protected GaugeObject gauge; /// /// /// protected GaugeEditorForm gaugeEditor; internal PointerEditor() : base() { gauge = new GaugeObject(); gaugeEditor = new GaugeEditorForm(gauge); } private void SetPointer(GaugePointer pointer) { if (pointer is LinearPointer) { gauge = pointer.Parent as LinearGauge; gaugeEditor = new LinearGaugeEditorForm((LinearGauge)gauge); } else if (pointer is SimplePointer) { gauge = pointer.Parent as SimpleGauge; gaugeEditor = new SimpleGaugeEditorForm((SimpleGauge)gauge); } else if (pointer is RadialPointer) { gauge = pointer.Parent as RadialGauge; gaugeEditor = new RadialGaugeEditorForm((RadialGauge)gauge); } gaugeEditor.pageControl1.ActivePage = (Panel)gaugeEditor.pageControl1.Pages.Find("pgPointer", false)[0]; } /// public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } /// public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object Value) { GaugePointer pointer = (GaugePointer)Value; Report report = context != null && context.Instance is Base ? (context.Instance as Base).Report : null; if (report != null) { SetPointer(pointer); gauge.InvokeEditor(gaugeEditor); return gauge.Pointer; } return Value; } } }