DynamicGridColumn.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows;
  4. using InABox.Core;
  5. namespace InABox.DynamicGrid;
  6. public class ColumnNameGenerator : LookupGenerator<object>
  7. {
  8. public ColumnNameGenerator(object[] items) : base(items)
  9. {
  10. //DynamicGridColumns cols = new DynamicGridColumns();
  11. //cols.ExtractColumns(type, "");
  12. //foreach (DynamicGridColumn col in cols.Where(x => (x.Editor != null) && (x.Editor.Visible != Visible.Disabled)))
  13. // AddValue(col.ColumnName, col.ColumnName);
  14. }
  15. }
  16. public class DynamicColumnNameEditor : BaseEditor
  17. {
  18. public Func<string[]>? ColumnNames;
  19. public Type Type { get; set; }
  20. protected override BaseEditor DoClone()
  21. {
  22. return new DynamicColumnNameEditor()
  23. {
  24. ColumnNames = ColumnNames,
  25. Type = Type
  26. };
  27. }
  28. public string[] GetColumnNames() => ColumnNames?.Invoke() ?? [];
  29. }
  30. public class DynamicGridColumn : DynamicColumnBase
  31. {
  32. public DynamicGridColumn()
  33. {
  34. Editor = new NullEditor();
  35. }
  36. [DynamicColumnNameEditor(Visible = Visible.Default)]
  37. [EditorSequence(1)]
  38. public string ColumnName { get; set; }
  39. [EditorSequence(2)]
  40. [IntegerEditor(Visible = Visible.Default)]
  41. public int Width { get; set; }
  42. [EditorSequence(3)]
  43. [TextBoxEditor(Visible = Visible.Default)]
  44. public string Caption { get; set; }
  45. [EditorSequence(4)]
  46. [TextBoxEditor(Width = 60, Visible = Visible.Default)]
  47. public string Format { get; set; }
  48. [EnumLookupEditor(typeof(Alignment), Width = 100, Visible = Visible.Default)]
  49. [EditorSequence(5)]
  50. public Alignment Alignment { get; set; }
  51. public BaseEditor Editor { get; set; }
  52. public VerticalAlignment VerticalAlignment() => Alignment.VerticalAlignment();
  53. public HorizontalAlignment HorizontalAlignment(Type datatype) => Alignment.HorizontalAlignment(datatype);
  54. public override string ToString()
  55. {
  56. return ColumnName;
  57. }
  58. public DynamicGridColumn Copy()
  59. {
  60. return new DynamicGridColumn
  61. {
  62. ColumnName = ColumnName,
  63. Width = Width,
  64. Caption = Caption,
  65. Format = Format,
  66. Alignment = Alignment,
  67. Editor = Editor.CloneEditor()
  68. };
  69. }
  70. public static DynamicGridColumn FromCoreGridColumn(CoreGridColumn column)
  71. {
  72. return new DynamicGridColumn
  73. {
  74. ColumnName = column.Property.Name,
  75. Width = column.Width,
  76. Caption = column.Caption,
  77. Format = column.Format,
  78. Alignment = column.Alignment,
  79. Editor = column.Editor.CloneEditor()
  80. };
  81. }
  82. }