BaseEditor.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. }