PointerEditor.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Drawing.Design;
  3. using System.ComponentModel;
  4. using System.Windows.Forms;
  5. using FastReport.Gauge;
  6. using FastReport.Gauge.Linear;
  7. using FastReport.Gauge.Simple;
  8. using FastReport.Gauge.Radial;
  9. namespace FastReport.TypeEditors
  10. {
  11. /// <summary>
  12. /// Provides a user interface for editing an expression.
  13. /// </summary>
  14. internal class PointerEditor : UITypeEditor
  15. {
  16. /// <summary>
  17. ///
  18. /// </summary>
  19. protected GaugeObject gauge;
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. protected GaugeEditorForm gaugeEditor;
  24. internal PointerEditor() : base()
  25. {
  26. gauge = new GaugeObject();
  27. gaugeEditor = new GaugeEditorForm(gauge);
  28. }
  29. private void SetPointer(GaugePointer pointer)
  30. {
  31. if (pointer is LinearPointer)
  32. {
  33. gauge = pointer.Parent as LinearGauge;
  34. gaugeEditor = new LinearGaugeEditorForm((LinearGauge)gauge);
  35. }
  36. else if (pointer is SimplePointer)
  37. {
  38. gauge = pointer.Parent as SimpleGauge;
  39. gaugeEditor = new SimpleGaugeEditorForm((SimpleGauge)gauge);
  40. }
  41. else if (pointer is RadialPointer)
  42. {
  43. gauge = pointer.Parent as RadialGauge;
  44. gaugeEditor = new RadialGaugeEditorForm((RadialGauge)gauge);
  45. }
  46. gaugeEditor.pageControl1.ActivePage = (Panel)gaugeEditor.pageControl1.Pages.Find("pgPointer", false)[0];
  47. }
  48. /// <inheritdoc/>
  49. public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
  50. {
  51. return UITypeEditorEditStyle.Modal;
  52. }
  53. /// <inheritdoc/>
  54. public override object EditValue(ITypeDescriptorContext context,
  55. IServiceProvider provider, object Value)
  56. {
  57. GaugePointer pointer = (GaugePointer)Value;
  58. Report report = context != null && context.Instance is Base ? (context.Instance as Base).Report : null;
  59. if (report != null)
  60. {
  61. SetPointer(pointer);
  62. gauge.InvokeEditor(gaugeEditor);
  63. return gauge.Pointer;
  64. }
  65. return Value;
  66. }
  67. }
  68. }