MeetingItemDocumentGrid.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Threading;
  3. using System.Windows.Media.Imaging;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. namespace PRSDesktop
  9. {
  10. public class MeetingItemDocumentGrid : DynamicDataGrid<MeetingItemDocument>
  11. {
  12. public Guid MeetingItemID { get; set; }
  13. public MeetingItemDocumentGrid()
  14. {
  15. HiddenColumns.Add(x => x.DocumentLink.ID);
  16. HiddenColumns.Add(x => x.EntityLink.ID);
  17. HiddenColumns.Add(x => x.DocumentLink.FileName);
  18. ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start });
  19. }
  20. protected override void DoReconfigure(DynamicGridOptions options)
  21. {
  22. base.DoReconfigure(options);
  23. options.Clear();
  24. options.AddRows = true;
  25. options.DeleteRows = true;
  26. options.RecordCount = true;
  27. }
  28. protected override DynamicGridColumns LoadColumns()
  29. {
  30. return new DynamicGridColumns()
  31. {
  32. new DynamicGridColumn()
  33. {
  34. ColumnName = CoreUtils.GetFullPropertyName<MeetingItemDocument, String>(x => x.DocumentLink.FileName, "."),
  35. Width = 0
  36. }
  37. };
  38. }
  39. protected override bool CanCreateItems()
  40. {
  41. return MeetingItemID == Guid.Empty
  42. ? false
  43. : base.CanCreateItems();
  44. }
  45. public override MeetingItemDocument CreateItem()
  46. {
  47. if (MeetingItemID == Guid.Empty)
  48. throw new Exception("No Meeting Selected!");
  49. var result = base.CreateItem();
  50. result.EntityLink.ID = MeetingItemID;
  51. return result;
  52. }
  53. protected override void Reload(
  54. Filters<MeetingItemDocument> criteria, Columns<MeetingItemDocument> columns, ref SortOrder<MeetingItemDocument>? sort,
  55. CancellationToken token, Action<CoreTable?, Exception?> action)
  56. {
  57. criteria.Add(MeetingItemID == Guid.Empty
  58. ? new Filter<MeetingItemDocument>(x=>x.ID).None()
  59. : new Filter<MeetingItemDocument>(x => x.EntityLink.ID).IsEqualTo(MeetingItemID));
  60. base.Reload(criteria, columns, ref sort, token, action);
  61. }
  62. private BitmapImage DocumentImage(CoreRow arg)
  63. {
  64. return PRSDesktop.Resources.view.AsBitmapImage();
  65. }
  66. private bool ViewDocument(CoreRow row)
  67. {
  68. var doc = row.ToObject<MeetingItemDocument>();
  69. var viewer = new DocumentEditor(doc);
  70. viewer.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>();
  71. viewer.ShowDialog();
  72. return false;
  73. }
  74. }
  75. }