DynamicGridColumn.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows;
  4. using InABox.Core;
  5. namespace InABox.DynamicGrid
  6. {
  7. public class ColumnNameGenerator : LookupGenerator<object>
  8. {
  9. public ColumnNameGenerator(object[] items) : base(items)
  10. {
  11. //DynamicGridColumns cols = new DynamicGridColumns();
  12. //cols.ExtractColumns(type, "");
  13. //foreach (DynamicGridColumn col in cols.Where(x => (x.Editor != null) && (x.Editor.Visible != Visible.Disabled)))
  14. // AddValue(col.ColumnName, col.ColumnName);
  15. }
  16. }
  17. public class DynamicGridColumn : DynamicColumnBase
  18. {
  19. public DynamicGridColumn()
  20. {
  21. Editor = new NullEditor();
  22. }
  23. [ComboLookupEditor(typeof(ColumnNameGenerator), Visible = Visible.Default)]
  24. [EditorSequence(1)]
  25. public string ColumnName { get; set; }
  26. [EditorSequence(2)]
  27. [IntegerEditor(Visible = Visible.Default)]
  28. public int Width { get; set; }
  29. [EditorSequence(3)]
  30. [TextBoxEditor(Visible = Visible.Default)]
  31. public string Caption { get; set; }
  32. [EditorSequence(4)]
  33. [TextBoxEditor(Width = 60, Visible = Visible.Default)]
  34. public string Format { get; set; }
  35. [EnumLookupEditor(typeof(Alignment), Width = 100, Visible = Visible.Default)]
  36. [EditorSequence(5)]
  37. public Alignment Alignment { get; set; }
  38. public BaseEditor Editor { get; set; }
  39. public VerticalAlignment VerticalAlignment()
  40. {
  41. if (Alignment.Equals(Alignment.NotSet))
  42. return System.Windows.VerticalAlignment.Center;
  43. if (Alignment.Equals(Alignment.TopLeft) || Alignment.Equals(Alignment.TopCenter) || Alignment.Equals(Alignment.TopRight))
  44. return System.Windows.VerticalAlignment.Top;
  45. if (Alignment.Equals(Alignment.MiddleLeft) || Alignment.Equals(Alignment.MiddleCenter) || Alignment.Equals(Alignment.MiddleRight))
  46. return System.Windows.VerticalAlignment.Center;
  47. return System.Windows.VerticalAlignment.Bottom;
  48. }
  49. public HorizontalAlignment HorizontalAlignment(Type datatype)
  50. {
  51. if (Alignment.Equals(Alignment.NotSet))
  52. return datatype.IsNumeric() ? System.Windows.HorizontalAlignment.Right :
  53. datatype == typeof(bool) ? System.Windows.HorizontalAlignment.Center : System.Windows.HorizontalAlignment.Left;
  54. if (Alignment.Equals(Alignment.TopLeft) || Alignment.Equals(Alignment.MiddleLeft) || Alignment.Equals(Alignment.BottomLeft))
  55. return System.Windows.HorizontalAlignment.Left;
  56. if (Alignment.Equals(Alignment.TopCenter) || Alignment.Equals(Alignment.MiddleCenter) || Alignment.Equals(Alignment.BottomCenter))
  57. return System.Windows.HorizontalAlignment.Center;
  58. return System.Windows.HorizontalAlignment.Right;
  59. }
  60. public override string ToString()
  61. {
  62. return ColumnName;
  63. }
  64. }
  65. }