using System; using System.Collections.Generic; using System.Windows; using InABox.Core; namespace InABox.DynamicGrid; public class ColumnNameGenerator : LookupGenerator { public ColumnNameGenerator(object[] items) : base(items) { //DynamicGridColumns cols = new DynamicGridColumns(); //cols.ExtractColumns(type, ""); //foreach (DynamicGridColumn col in cols.Where(x => (x.Editor != null) && (x.Editor.Visible != Visible.Disabled))) // AddValue(col.ColumnName, col.ColumnName); } } public class DynamicColumnNameEditor : BaseEditor { public Func? ColumnNames; protected override BaseEditor DoClone() { return new DynamicColumnNameEditor() { ColumnNames = ColumnNames }; } public string[] GetColumnNames() => ColumnNames?.Invoke() ?? []; } public class DynamicGridColumn : DynamicColumnBase { public DynamicGridColumn() { Editor = new NullEditor(); } [DynamicColumnNameEditor(Visible = Visible.Default)] [EditorSequence(1)] public string ColumnName { get; set; } [EditorSequence(2)] [IntegerEditor(Visible = Visible.Default)] public int Width { get; set; } [EditorSequence(3)] [TextBoxEditor(Visible = Visible.Default)] public string Caption { get; set; } [EditorSequence(4)] [TextBoxEditor(Width = 60, Visible = Visible.Default)] public string Format { get; set; } [EnumLookupEditor(typeof(Alignment), Width = 100, Visible = Visible.Default)] [EditorSequence(5)] public Alignment Alignment { get; set; } public BaseEditor Editor { get; set; } public VerticalAlignment VerticalAlignment() => Alignment.VerticalAlignment(); public HorizontalAlignment HorizontalAlignment(Type datatype) => Alignment.HorizontalAlignment(datatype); public override string ToString() { return ColumnName; } public DynamicGridColumn Copy() { return new DynamicGridColumn { ColumnName = ColumnName, Width = Width, Caption = Caption, Format = Format, Alignment = Alignment, Editor = Editor.CloneEditor() }; } public static DynamicGridColumn FromCoreGridColumn(CoreGridColumn column) { return new DynamicGridColumn { ColumnName = column.Property.Name, Width = column.Width, Caption = column.Caption, Format = column.Format, Alignment = column.Alignment, Editor = column.Editor.CloneEditor() }; } }