JobTrackerGrid.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. namespace PRSDesktop
  9. {
  10. public class JobTrackerGrid : DynamicManyToManyDataGrid<JobTracker, Job>, IJobControl, IDataModelSource
  11. {
  12. public event DataModelUpdateEvent OnUpdateDataModel;
  13. public string SectionName => "Job Trackers";
  14. public DataModel DataModel(Selection selection)
  15. {
  16. var ids = ExtractValues(x => x.ID, selection).ToArray();
  17. return new BaseDataModel<JobTracker>(new Filter<JobTracker>(x => x.ID).InList(ids));
  18. }
  19. public Guid ParentID
  20. {
  21. get => ID;
  22. set => ID = value;
  23. }
  24. public JobPanelSettings Settings { get; set; }
  25. protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
  26. {
  27. if (ParentID.Equals(Guid.Empty) || ParentID.Equals(CoreUtils.FullGuid))
  28. MessageBox.Show("Please select a Job first!");
  29. else
  30. base.DoAdd();
  31. }
  32. protected override JobTracker CreateItem()
  33. {
  34. var result = base.CreateItem();
  35. result.JobLink.ID = ParentID;
  36. return result;
  37. }
  38. protected override void Reload(Filters<JobTracker> criteria, Columns<JobTracker> columns, ref SortOrder<JobTracker> sort,
  39. Action<CoreTable, Exception> action)
  40. {
  41. criteria.Add(new Filter<JobTracker>(x => x.JobLink.ID).IsEqualTo(ParentID));
  42. base.Reload(criteria, columns, ref sort, action);
  43. }
  44. protected override void DeleteItems(params CoreRow[] rows)
  45. {
  46. var items = LoadItems(rows);
  47. foreach (var item in items)
  48. new Client<JobTracker>().Delete(item, "");
  49. }
  50. public override void SaveItem(JobTracker item)
  51. {
  52. new Client<JobTracker>().Save(item, "");
  53. base.SaveItem(item);
  54. }
  55. }
  56. }