123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading;
- using System.Windows.Media.Imaging;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.DynamicGrid.Spreadsheet;
- using InABox.WPF;
- using net.sf.mpxj.phoenix.schema.phoenix4;
- namespace PRSDesktop.Components.Spreadsheet
- {
- public class SpreadsheetTemplateGrid : DynamicDataGrid<SpreadsheetTemplate>
- {
-
- public Type AppliesTo { get; set; }
-
- protected override void Init()
- {
- base.Init();
- ActionColumns.Add(new DynamicImageColumn(EditImage, EditSpreadsheet) { Position = DynamicActionColumnPosition.Start });
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.Clear();
- options.AddRows = true;
- options.EditRows = true;
- options.DeleteRows = true;
- options.RecordCount = true;
- }
- protected override void Reload(
- Filters<SpreadsheetTemplate> criteria, Columns<SpreadsheetTemplate> columns, ref SortOrder<SpreadsheetTemplate>? sort,
- CancellationToken token, Action<CoreTable?, Exception?> action)
- {
- criteria.Add(new Filter<SpreadsheetTemplate>(c => c.AppliesTo).IsEqualTo(AppliesTo.EntityName().Split(".").Last()));
- base.Reload(criteria, columns, ref sort, token, action);
- }
- public override SpreadsheetTemplate CreateItem()
- {
- var result = base.CreateItem();
- result.AppliesTo = AppliesTo.EntityName().Split(".").Last();
- return result;
- }
- private BitmapImage EditImage(CoreRow? arg)
- {
- return PRSDesktop.Resources.pencil.AsBitmapImage();
- }
- private bool EditSpreadsheet(CoreRow? row)
- {
- var spreadsheet = LoadItem(row);
- var window = new SpreadsheetWindow(spreadsheet);
- window.OnSave += SaveSpreadsheet;
- window.ShowDialog();
- Refresh(false, true);
- return false;
- }
- protected override void DoDoubleClick(object sender, DynamicGridCellClickEventArgs args)
- {
- if (SelectedRows.Any())
- EditSpreadsheet(SelectedRows.First());
- else
- base.DoDoubleClick(sender, args);
- }
-
- private void SaveSpreadsheet(object sender, SpreadsheetSaveArgs args)
- {
- SpreadsheetTemplate? sheet = args.Spreadsheet as SpreadsheetTemplate;
- if (sheet == null)
- return;
-
- if (args.SaveAs || Guid.Equals(sheet.ID,Guid.Empty))
- {
- sheet.ID = Guid.Empty;
- sheet.CommitChanges();
- sheet.Data = args.Data;
- EditItems(new SpreadsheetTemplate[] { sheet });
- }
- else
- {
- sheet.Data = args.Data;
- new Client<SpreadsheetTemplate>().Save(args.Spreadsheet as SpreadsheetTemplate, "Saved by PRS Spreadsheet");
- }
- }
- public static void ViewSpreadsheetTemplates<TEntity>() where TEntity : Entity
- {
- SpreadsheetTemplateGrid grid = new SpreadsheetTemplateGrid();
- grid.AppliesTo = typeof(TEntity);
- grid.Refresh(true, true);
- DynamicContentDialog dlg = new DynamicContentDialog(grid, false);
- dlg.Title = $"{typeof(TEntity).EntityName().Split(".").Last()} Spreadsheet Templates";
- dlg.ShowDialog();
- }
- }
- }
|