DynamicColumnNameEditorControl.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using InABox.Core;
  2. using InABox.WPF;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Media;
  11. namespace InABox.DynamicGrid;
  12. public class DynamicColumnNameEditorControl : DynamicEditorControl<string, DynamicColumnNameEditor>
  13. {
  14. private TextBox TextBox = null!;
  15. private Button Edit = null!;
  16. private string _value = "";
  17. public override void Configure()
  18. {
  19. }
  20. protected override FrameworkElement CreateEditor()
  21. {
  22. var grid = new Grid
  23. {
  24. VerticalAlignment = VerticalAlignment.Stretch,
  25. HorizontalAlignment = HorizontalAlignment.Stretch
  26. };
  27. grid.AddColumn(GridUnitType.Star);
  28. grid.AddColumn(GridUnitType.Auto);
  29. TextBox = new TextBox
  30. {
  31. VerticalAlignment = VerticalAlignment.Stretch,
  32. VerticalContentAlignment = VerticalAlignment.Center,
  33. HorizontalAlignment = HorizontalAlignment.Stretch,
  34. Margin = new Thickness(0, 0, 0, 0),
  35. IsEnabled = false
  36. };
  37. Edit = new Button
  38. {
  39. VerticalAlignment = VerticalAlignment.Stretch,
  40. VerticalContentAlignment = VerticalAlignment.Center,
  41. HorizontalAlignment = HorizontalAlignment.Stretch,
  42. Margin = new Thickness(5, 1, 0, 1),
  43. Padding = new Thickness(5, 0, 5, 0),
  44. Width = 20,
  45. Content = "..",
  46. Focusable = false,
  47. };
  48. Edit.Click += EditButton_Click;
  49. grid.AddChild(TextBox, 0, 0);
  50. grid.AddChild(Edit, 0, 1);
  51. return grid;
  52. }
  53. private void EditButton_Click(object sender, RoutedEventArgs e)
  54. {
  55. if(EditorDefinition.Schema is not null && DynamicGridColumnNameSelectorGrid.SelectColumnName(EditorDefinition.Schema, out var value))
  56. {
  57. _value = value;
  58. TextBox.Text = _value;
  59. CheckChanged();
  60. }
  61. }
  62. public override int DesiredHeight()
  63. {
  64. return 25;
  65. }
  66. public override int DesiredWidth()
  67. {
  68. return int.MaxValue;
  69. }
  70. public override void SetColor(Color color)
  71. {
  72. TextBox.Background = color.ToBrush();
  73. }
  74. public override void SetFocus()
  75. {
  76. TextBox.Focus();
  77. }
  78. protected override string RetrieveValue()
  79. {
  80. return _value;
  81. }
  82. protected override void UpdateValue(string value)
  83. {
  84. _value = value;
  85. TextBox.Text = value;
  86. }
  87. }