BlobEditorControl.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Reflection.Emit;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Media;
  6. using InABox.Core;
  7. namespace InABox.DynamicGrid
  8. {
  9. public class BlobEditorControl : DynamicEditorControl<byte[], BlobEditor>
  10. {
  11. static BlobEditorControl()
  12. {
  13. //DynamicEditorControlFactory.Register<BlobEditorControl, BlobEditor>();
  14. }
  15. private Button Editor;
  16. private byte[] _data = new byte[] { };
  17. public Action<object, BlobEditorClickArgs> OnClick { get; set; }
  18. public override void Configure()
  19. {
  20. if (EditorDefinition is not BlobEditor editor) return;
  21. OnClick += editor.OnClick;
  22. }
  23. protected override FrameworkElement CreateEditor()
  24. {
  25. Editor = new Button
  26. {
  27. Content = EditorDefinition.Label,
  28. HorizontalAlignment = HorizontalAlignment.Stretch,
  29. VerticalAlignment = VerticalAlignment.Stretch,
  30. VerticalContentAlignment = VerticalAlignment.Center,
  31. };
  32. Editor.Click += Editor_Click;
  33. return Editor;
  34. }
  35. private void Editor_Click(object sender, RoutedEventArgs e)
  36. {
  37. var args = new BlobEditorClickArgs() { Cancel = false, Data = _data };
  38. OnClick?.Invoke(this, args);
  39. if (!args.Cancel)
  40. _data = args.Data;
  41. }
  42. public override int DesiredHeight()
  43. {
  44. return 25;
  45. }
  46. public override int DesiredWidth()
  47. {
  48. return 100;
  49. }
  50. protected override byte[] RetrieveValue()
  51. {
  52. return _data;
  53. }
  54. protected override void UpdateValue(byte[] value)
  55. {
  56. _data = value;
  57. }
  58. public override void SetFocus()
  59. {
  60. Editor.Focus();
  61. }
  62. public override void SetColor(Color color)
  63. {
  64. }
  65. }
  66. }