EnumLookupEditor.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Linq;
  3. namespace InABox.Core
  4. {
  5. public class EnumLookupEditor : StaticLookupEditor
  6. {
  7. public EnumLookupEditor(Type type) : base(type)
  8. {
  9. if (!Type.IsEnum)
  10. throw new ArgumentException("T must be an enumerated type");
  11. LookupWidth = 120;
  12. }
  13. public override CoreTable Values(string columnname, object[]? items)
  14. {
  15. var result = new CoreTable();
  16. result.Columns.Add(new CoreColumn { ColumnName = columnname.Split('.').Last(), DataType = Type });
  17. result.Columns.Add(new CoreColumn { ColumnName = "Display", DataType = typeof(string) });
  18. foreach (var item in Enum.GetValues(Type))
  19. {
  20. var row = result.NewRow();
  21. row[columnname.Split('.').Last()] = item;
  22. row["Display"] = item.ToString().SplitCamelCase();
  23. result.Rows.Add(row);
  24. }
  25. return result;
  26. }
  27. public override void Clear()
  28. {
  29. }
  30. protected override BaseEditor DoClone()
  31. {
  32. return CloneStaticLookupEditor();
  33. }
  34. }
  35. }