DFLayoutControl.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. namespace InABox.Core
  3. {
  4. public abstract class DFLayoutControl : DFLayoutObject, ISequenceable
  5. {
  6. protected override void Init()
  7. {
  8. base.Init();
  9. Row = 1;
  10. RowSpan = 1;
  11. Column = 1;
  12. ColumnSpan = 1;
  13. HorizontalAlignment = DFLayoutAlignment.Stretch;
  14. VerticalAlignment = DFLayoutAlignment.Stretch;
  15. }
  16. [IntegerEditor]
  17. [EditorSequence(1)]
  18. public int Row { get; set; }
  19. [IntegerEditor]
  20. [EditorSequence(2)]
  21. public int RowSpan { get; set; }
  22. [EnumLookupEditor(typeof(DFLayoutAlignment))]
  23. [EditorSequence(3)]
  24. public DFLayoutAlignment VerticalAlignment { get; set; }
  25. [IntegerEditor]
  26. [EditorSequence(4)]
  27. public int Column { get; set; }
  28. [IntegerEditor]
  29. [EditorSequence(5)]
  30. public int ColumnSpan { get; set; }
  31. [EnumLookupEditor(typeof(DFLayoutAlignment))]
  32. [EditorSequence(6)]
  33. public DFLayoutAlignment HorizontalAlignment { get; set; }
  34. [TextBoxEditor(Visible = Visible.Default, Editable = Editable.Hidden)]
  35. [DoNotSerialize]
  36. public string Description => GetDescription();
  37. [NullEditor]
  38. public long Sequence { get; set; }
  39. protected virtual string GetDescription()
  40. {
  41. return GetType().Name;
  42. }
  43. protected override void LoadProperties()
  44. {
  45. Row = GetProperty("Row", 1);
  46. RowSpan = GetProperty("RowSpan", 1);
  47. VerticalAlignment = GetProperty("VerticalAlignment", DFLayoutAlignment.Middle);
  48. Column = GetProperty("Column", 1);
  49. ColumnSpan = GetProperty("ColumnSpan", 1);
  50. HorizontalAlignment = GetProperty("HorizontalAlignment", DFLayoutAlignment.Middle);
  51. Sequence = GetProperty("Sequence", DateTime.Now.Ticks);
  52. }
  53. protected override void SaveProperties()
  54. {
  55. SetProperty("Row", Row);
  56. SetProperty("RowSpan", RowSpan);
  57. SetProperty("VerticalAlignment", VerticalAlignment);
  58. SetProperty("Column", Column);
  59. SetProperty("ColumnSpan", ColumnSpan);
  60. SetProperty("HorizontalAlignment", HorizontalAlignment);
  61. SetProperty("Sequence", Sequence);
  62. }
  63. }
  64. }