DFLayoutControl.cs 2.3 KB

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