MeetingItemDocumentGrid.cs 2.8 KB

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