using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; using InABox.Core; using Syncfusion.UI.Xaml.Grid; using Image = System.Windows.Controls.Image; using Label = System.Windows.Controls.Label; namespace InABox.DynamicGrid { public abstract class DynamicActionColumn : DynamicColumnBase { public DynamicActionColumnPosition Position { get; set; } = DynamicActionColumnPosition.End; public delegate bool ActionDelegate(CoreRow? row); public delegate FrameworkElement? ActionColumnToolTip(DynamicActionColumn column, CoreRow? row); public ActionDelegate? Action { get; set; } public ActionColumnToolTip? ToolTip { get; set; } public Func? GetSummary = null; public string[]? ExcludeFilters { get; set; } public string[]? SelectedFilters { get; set; } public string[]? Filters { get; set; } = null; public Func? FilterRecord { get; set; } = null; public Func? ContextMenu { get; set; } public string HeaderText { get; set; } = " "; public bool VerticalHeader { get; set; } public int Width { get; set; } = 0; public FrameworkElement? TextToolTip(string? text) { if (string.IsNullOrWhiteSpace(text)) return null; var border = new Border { BorderBrush = new SolidColorBrush(Colors.Gray), BorderThickness = new Thickness(0.75), CornerRadius = new CornerRadius(5), Background = new SolidColorBrush(Colors.LightYellow), Padding = new Thickness(5), Child = new Label { Content = text } }; return border; } public FrameworkElement? ImageToolTip(BitmapImage? image) { if (image == null) return null; var result = new Border { Background = new SolidColorBrush(Colors.LightYellow), BorderBrush = new SolidColorBrush(Colors.Gray), BorderThickness = new Thickness(0.75) }; result.Child = new Image { Source = image }; return result; } public abstract object? Data(CoreRow? row); public GridSummaryColumn? Summary() => GetSummary?.Invoke(); } }