MeetingItemDocumentGrid.cs 2.7 KB

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