using System; using System.Windows; using System.Windows.Media.Imaging; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; using InABox.Wpf; using PRSDesktop.Panels.Jobs; using System.Threading; namespace PRSDesktop { internal class JobDesignGrid : DynamicDataGrid, IMasterDetailControl { public Job? Master { get; set; } public Filter MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty ? new Filter(x => x.JobLink.ID).IsEqualTo(Master.ID) : new Filter().None(); protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.RecordCount = true; options.SelectColumns = true; options.FilterRows = true; options.ImportData = true; } protected override void DoImport() { var window = new JobDesignImportWindow(); if (window.ShowDialog() == true) Refresh(false,true); } protected override void Reload( Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { criteria.Add(MasterDetailFilter); sort = new SortOrder(x => x.Number, SortDirection.Descending); base.Reload(criteria, columns, ref sort, token, action); } protected override bool CanCreateItems() { return base.CanCreateItems() && ((Master?.ID ?? Guid.Empty) != Guid.Empty); } public override Setout CreateItem() { var setout = base.CreateItem(); setout.JobLink.ID = Master?.ID ?? Guid.Empty; setout.JobLink.Synchronise(Master); return setout; } } }