BaseEditor.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using System;
  2. namespace InABox.Core
  3. {
  4. public interface IBaseEditor
  5. {
  6. Visible Visible { get; set; }
  7. Editable Editable { get; set; }
  8. string ToolTip { get; set; }
  9. Alignment Alignment { get; set; }
  10. int Width { get; set; }
  11. string Format { get; set; }
  12. int ColumnSequence { get; set; }
  13. int EditorSequence { get; set; }
  14. string Caption { get; set; }
  15. string? Page { get; set; }
  16. Summary Summary { get; set; }
  17. BaseEditor CloneEditor();
  18. public object Clone();
  19. }
  20. public abstract class BaseEditor : Attribute, IEnclosedEntity, ICloneable, IBaseEditor
  21. {
  22. protected BaseEditor()
  23. {
  24. Editable = Editable.Enabled;
  25. Visible = Visible.Optional;
  26. Alignment = Alignment.MiddleLeft;
  27. Width = 0;
  28. Format = "";
  29. ColumnSequence = 0;
  30. EditorSequence = 0;
  31. Caption = "";
  32. Summary = Summary.None;
  33. ToolTip = "";
  34. }
  35. [EnumLookupEditor(typeof(Visible))]
  36. public Visible Visible { get; set; }
  37. [EnumLookupEditor(typeof(Editable))]
  38. public Editable Editable { get; set; }
  39. [NullEditor]
  40. public string ToolTip { get; set; }
  41. [NullEditor]
  42. public Alignment Alignment { get; set; }
  43. [NullEditor]
  44. public int Width { get; set; }
  45. [NullEditor]
  46. public string Format { get; set; }
  47. [NullEditor]
  48. public int ColumnSequence { get; set; }
  49. [NullEditor]
  50. public int EditorSequence { get; set; }
  51. [NullEditor]
  52. public string Caption { get; set; }
  53. [NullEditor]
  54. public string? Page { get; set; }
  55. [NullEditor]
  56. public Summary Summary { get; set; }
  57. public BaseEditor CloneEditor()
  58. {
  59. var result = DoClone();
  60. result.Visible = Visible;
  61. result.Editable = Editable;
  62. result.Alignment = Alignment;
  63. result.Width = Width;
  64. result.Format = Format;
  65. result.ColumnSequence = ColumnSequence;
  66. result.EditorSequence = EditorSequence;
  67. result.Caption = Caption;
  68. result.Page = Page;
  69. result.Summary = Summary;
  70. result.ToolTip = ToolTip;
  71. return result;
  72. }
  73. public object Clone() => CloneEditor();
  74. protected abstract BaseEditor DoClone();
  75. }
  76. }