BaseEditor.cs 1.9 KB

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