DFLayoutHeader.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. namespace InABox.Core
  2. {
  3. public enum DFLayoutHeaderAlignment
  4. {
  5. Left,
  6. Right
  7. }
  8. public class DFLayoutHeader : DFLayoutControl, IDFLayoutTextControl
  9. {
  10. [TextBoxEditor]
  11. [EditorSequence(-1)]
  12. public string Header { get; set; } = "";
  13. [CheckBoxEditor]
  14. [EditorSequence(0)]
  15. public bool Collapsed { get; set; } = false;
  16. [EnumLookupEditor(typeof(DFLayoutHeaderAlignment))]
  17. [EditorSequence(1)]
  18. public DFLayoutHeaderAlignment Alignment { get; set; } = DFLayoutHeaderAlignment.Left;
  19. [EditorSequence("Style", 0)]
  20. public DFLayoutTextStyle Style => InitializeField(ref _style, nameof(Style));
  21. private DFLayoutTextStyle _style;
  22. protected override void Init()
  23. {
  24. base.Init();
  25. Style.IsBold = true;
  26. }
  27. protected override string GetDescription()
  28. {
  29. return $"Header: {Header}";
  30. }
  31. protected override void LoadProperties()
  32. {
  33. base.LoadProperties();
  34. Header = GetProperty("Header", "");
  35. Collapsed = GetProperty("Collapsed", false);
  36. Alignment = GetProperty("Alignment", DFLayoutHeaderAlignment.Left);
  37. Style.LoadProperties(this);
  38. }
  39. protected override void SaveProperties()
  40. {
  41. base.SaveProperties();
  42. SetProperty("Header", Header);
  43. SetProperty("Collapsed", Collapsed);
  44. SetProperty("Alignment", Alignment);
  45. Style.SaveProperties(this);
  46. }
  47. public T GetStyleProperty<T>(string name, T defaultValue)
  48. {
  49. if (name == "IsBold") defaultValue = CoreUtils.ChangeType<T>(true) ?? defaultValue;
  50. return GetProperty($"Style.{name}", defaultValue);
  51. }
  52. public void SetStyleProperty(string name, object? value)
  53. {
  54. SetProperty($"Style.{name}", value);
  55. }
  56. }
  57. }