JobPlannerEmployeeSelector.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Linq.Expressions;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Imaging;
  11. using Comal.Classes;
  12. using InABox.Configuration;
  13. using InABox.Core;
  14. using InABox.DynamicGrid;
  15. using InABox.WPF;
  16. using Microsoft.Win32;
  17. using Syncfusion.Windows.Shared;
  18. namespace PRSDesktop
  19. {
  20. public class JobPlannerEmployee : BaseObject
  21. {
  22. public Guid ID { get; set; }
  23. [TextBoxEditor(Visible = Visible.Default)]
  24. [EditorSequence(1)]
  25. public String Name { get; set; }
  26. [DurationEditor(Visible=Visible.Default, Format = "hh:mm", Width=50)]
  27. [EditorSequence(2)]
  28. public TimeSpan Time { get; set; }
  29. }
  30. public enum JobPlannerEmployeeAction
  31. {
  32. Assign,
  33. Remove
  34. }
  35. public delegate void JobPlannerEmployeeGridAction(object sender, JobPlannerEmployee[] employee);
  36. public class JobPlannerEmployeeGrid : DynamicItemsListGrid<JobPlannerEmployee>
  37. {
  38. public static readonly DependencyProperty ActionProperty = DependencyProperty.Register(
  39. nameof (Action),
  40. typeof (JobPlannerEmployeeAction),
  41. typeof (JobPlannerEmployeeGrid),
  42. new PropertyMetadata(JobPlannerEmployeeAction.Assign)
  43. );
  44. public JobPlannerEmployeeAction Action
  45. {
  46. get => (JobPlannerEmployeeAction)GetValue(ActionProperty);
  47. set => SetValue(ActionProperty, value);
  48. }
  49. public event JobPlannerEmployeeGridAction OnAction;
  50. private BitmapImage _assign = PRSDesktop.Resources.small_add.AsBitmapImage();
  51. private BitmapImage _remove = PRSDesktop.Resources.small_delete.AsBitmapImage();
  52. public JobPlannerEmployeeGrid()
  53. {
  54. ActionColumns.Add(new DynamicImageColumn(EmployeeImage, EmployeeAction) { Position = DynamicActionColumnPosition.Start});
  55. }
  56. private bool EmployeeAction(CoreRow? arg)
  57. {
  58. if (arg == null)
  59. OnAction?.Invoke(this, Items.ToArray());
  60. else
  61. OnAction?.Invoke(this, new JobPlannerEmployee[] { arg.ToObject<JobPlannerEmployee>() });
  62. return true;
  63. }
  64. private BitmapImage? EmployeeImage(CoreRow? arg)
  65. {
  66. return Action == JobPlannerEmployeeAction.Assign
  67. ? _assign
  68. : _remove;
  69. }
  70. }
  71. }