| 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();        }    }}
 |