using System; using System.Windows.Media.Imaging; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop { public class MeetingItemDocumentGrid : DynamicDataGrid { public Guid MeetingItemID { get; set; } public MeetingItemDocumentGrid() { Options.BeginUpdate() .Clear() .Add(DynamicGridOption.AddRows) .Add(DynamicGridOption.DeleteRows) .Add(DynamicGridOption.RecordCount) .EndUpdate(); HiddenColumns.Add(x => x.DocumentLink.ID); HiddenColumns.Add(x => x.EntityLink.ID); HiddenColumns.Add(x => x.DocumentLink.FileName); ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start }); } protected override DynamicGridColumns LoadColumns() { return new DynamicGridColumns() { new DynamicGridColumn() { ColumnName = CoreUtils.GetFullPropertyName(x => x.DocumentLink.FileName, "."), Width = 0 } }; } protected override bool CanCreateItems() { return MeetingItemID == Guid.Empty ? false : base.CanCreateItems(); } protected override MeetingItemDocument CreateItem() { if (MeetingItemID == Guid.Empty) throw new Exception("No Meeting Selected!"); var result = base.CreateItem(); result.EntityLink.ID = MeetingItemID; return result; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { criteria.Add(MeetingItemID == Guid.Empty ? new Filter(x=>x.ID).None() : new Filter(x => x.EntityLink.ID).IsEqualTo(MeetingItemID)); base.Reload(criteria, columns, ref sort, action); } private BitmapImage DocumentImage(CoreRow arg) { return PRSDesktop.Resources.view.AsBitmapImage(); } private bool ViewDocument(CoreRow row) { var doc = row.ToObject(); var viewer = new DocumentEditor(doc); viewer.SaveAllowed = Security.IsAllowed(); viewer.ShowDialog(); return false; } } }