MeetingItemDocumentGrid.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. Options.BeginUpdate()
  15. .Clear()
  16. .Add(DynamicGridOption.AddRows)
  17. .Add(DynamicGridOption.DeleteRows)
  18. .Add(DynamicGridOption.RecordCount)
  19. .EndUpdate();
  20. HiddenColumns.Add(x => x.DocumentLink.ID);
  21. HiddenColumns.Add(x => x.EntityLink.ID);
  22. HiddenColumns.Add(x => x.DocumentLink.FileName);
  23. ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start });
  24. }
  25. protected override DynamicGridColumns LoadColumns()
  26. {
  27. return new DynamicGridColumns()
  28. {
  29. new DynamicGridColumn()
  30. {
  31. ColumnName = CoreUtils.GetFullPropertyName<MeetingItemDocument, String>(x => x.DocumentLink.FileName, "."),
  32. Width = 0
  33. }
  34. };
  35. }
  36. protected override bool CanCreateItems()
  37. {
  38. return MeetingItemID == Guid.Empty
  39. ? false
  40. : base.CanCreateItems();
  41. }
  42. protected override MeetingItemDocument CreateItem()
  43. {
  44. if (MeetingItemID == Guid.Empty)
  45. throw new Exception("No Meeting Selected!");
  46. var result = base.CreateItem();
  47. result.EntityLink.ID = MeetingItemID;
  48. return result;
  49. }
  50. protected override void Reload(Filters<MeetingItemDocument> criteria, Columns<MeetingItemDocument> columns, ref SortOrder<MeetingItemDocument> sort,
  51. Action<CoreTable, Exception> action)
  52. {
  53. criteria.Add(MeetingItemID == Guid.Empty
  54. ? new Filter<MeetingItemDocument>(x=>x.ID).None()
  55. : new Filter<MeetingItemDocument>(x => x.EntityLink.ID).IsEqualTo(MeetingItemID));
  56. base.Reload(criteria, columns, ref sort, action);
  57. }
  58. private BitmapImage DocumentImage(CoreRow arg)
  59. {
  60. return PRSDesktop.Resources.view.AsBitmapImage();
  61. }
  62. private bool ViewDocument(CoreRow row)
  63. {
  64. var doc = row.ToObject<MeetingItemDocument>();
  65. var viewer = new DocumentEditor(doc);
  66. viewer.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>();
  67. viewer.ShowDialog();
  68. return false;
  69. }
  70. }
  71. }