SpreadsheetTemplateGrid.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Media.Imaging;
  5. using Comal.Classes;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. using InABox.DynamicGrid.Spreadsheet;
  10. using InABox.WPF;
  11. using net.sf.mpxj.phoenix.schema.phoenix4;
  12. namespace PRSDesktop.Components.Spreadsheet
  13. {
  14. public class SpreadsheetTemplateGrid : DynamicDataGrid<SpreadsheetTemplate>
  15. {
  16. public Type AppliesTo { get; set; }
  17. public SpreadsheetTemplateGrid()
  18. {
  19. Options.BeginUpdate().Clear().Add(DynamicGridOption.AddRows)
  20. .Add(DynamicGridOption.EditRows)
  21. .Add(DynamicGridOption.DeleteRows)
  22. .Add(DynamicGridOption.RecordCount)
  23. .EndUpdate();
  24. ActionColumns.Add(new DynamicImageColumn(EditImage, EditSpreadsheet) { Position = DynamicActionColumnPosition.Start });
  25. }
  26. protected override void Reload(Filters<SpreadsheetTemplate> criteria, Columns<SpreadsheetTemplate> columns, ref SortOrder<SpreadsheetTemplate>? sort, Action<CoreTable?, Exception?> action)
  27. {
  28. criteria.Add(new Filter<SpreadsheetTemplate>(c => c.AppliesTo).IsEqualTo(AppliesTo.EntityName().Split(".").Last()));
  29. base.Reload(criteria, columns, ref sort, action);
  30. }
  31. protected override SpreadsheetTemplate CreateItem()
  32. {
  33. var result = base.CreateItem();
  34. result.AppliesTo = AppliesTo.EntityName().Split(".").Last();
  35. return result;
  36. }
  37. private BitmapImage EditImage(CoreRow? arg)
  38. {
  39. return PRSDesktop.Resources.pencil.AsBitmapImage();
  40. }
  41. private bool EditSpreadsheet(CoreRow? row)
  42. {
  43. var spreadsheet = LoadItem(row);
  44. var window = new SpreadsheetWindow(spreadsheet);
  45. window.OnSave += SaveSpreadsheet;
  46. window.ShowDialog();
  47. Refresh(false, true);
  48. return false;
  49. }
  50. protected override void DoDoubleClick(object sender)
  51. {
  52. if (SelectedRows.Any())
  53. EditSpreadsheet(SelectedRows.First());
  54. else
  55. base.DoDoubleClick(sender);
  56. }
  57. private void SaveSpreadsheet(object sender, SpreadsheetSaveArgs args)
  58. {
  59. SpreadsheetTemplate? sheet = args.Spreadsheet as SpreadsheetTemplate;
  60. if (sheet == null)
  61. return;
  62. if (args.SaveAs || Guid.Equals(sheet.ID,Guid.Empty))
  63. {
  64. sheet.ID = Guid.Empty;
  65. sheet.CommitChanges();
  66. sheet.Data = args.Data;
  67. EditItems(new SpreadsheetTemplate[] { sheet });
  68. }
  69. else
  70. {
  71. sheet.Data = args.Data;
  72. new Client<SpreadsheetTemplate>().Save(args.Spreadsheet as SpreadsheetTemplate, "Saved by PRS Spreadsheet");
  73. }
  74. }
  75. }
  76. }