| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | using InABox.Core;using InABox.DynamicGrid;using InABox.WPF;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Media;namespace InABox.Poster.MYOB;public class MYOBCompanyFileEditor : BaseEditor{    protected override BaseEditor DoClone()    {        return new MYOBCompanyFileEditor();    }}public class MYOBCompanyFileEditorControl : DynamicEnclosedEditorControl<MYOBCompanyFile, MYOBCompanyFileEditor>{    private Grid Grid = null!;    private TextBox TextBox = null!;    private Button Select = null!;    private Button Clear = null!;    private readonly MYOBCompanyFile Value = new();    private static readonly Column<MYOBCompanyFile> IDColumn = new(x => x.ID);    private static readonly Column<MYOBCompanyFile> NameColumn = new(x => x.Name);    public override int DesiredHeight() => 25;    public override int DesiredWidth() => int.MaxValue;    protected override FrameworkElement CreateEditor()    {        Grid = new Grid        {            VerticalAlignment = VerticalAlignment.Stretch,            HorizontalAlignment = HorizontalAlignment.Stretch        };        Grid.AddColumn(GridUnitType.Star);        Grid.AddColumn(70);        Grid.AddColumn(70);        TextBox = new TextBox        {            VerticalAlignment = VerticalAlignment.Stretch,            VerticalContentAlignment = VerticalAlignment.Center,            HorizontalAlignment = HorizontalAlignment.Stretch,            IsEnabled = false        };        Grid.AddChild(TextBox, 0, 0);        Select = new Button        {            VerticalAlignment = VerticalAlignment.Stretch,            VerticalContentAlignment = VerticalAlignment.Center,            HorizontalAlignment = HorizontalAlignment.Stretch,            Content = "Select",            Margin = new Thickness(5, 0, 0, 0),        };        Select.Click += Select_Click;        Grid.AddChild(Select, 0, 1);        Clear = new Button        {            VerticalAlignment = VerticalAlignment.Stretch,            VerticalContentAlignment = VerticalAlignment.Center,            HorizontalAlignment = HorizontalAlignment.Stretch,            Content = "Clear",            Margin = new Thickness(5, 0, 0, 0),            Focusable = false        };        Clear.Click += Clear_Click;        Grid.AddChild(Clear, 0, 2);        return Grid;    }    public override void Configure()    {    }    private void Select_Click(object sender, RoutedEventArgs e)    {        if (e.OriginalSource != Select) return;        var file = MYOBCompanyFileSelectionDialog.SelectCompanyFile();        if(file is not null)        {            Value.ID = file.Id;            Value.Name = file.Name;            TextBox.Text = Value.Name;            CheckChanged();        }    }    private void Clear_Click(object sender, RoutedEventArgs e)    {        Value.ID = Guid.Empty;        Value.Name = "";        TextBox.Text = "";        CheckChanged();    }    protected override object? GetChildValue(string property)    {        if (IDColumn.IsEqualTo(property)) return Value.ID;        if (NameColumn.IsEqualTo(property)) return Value.Name;        return null;    }    protected override void SetChildValue(string property, object? value)    {        if (IDColumn.IsEqualTo(property)) Value.ID = (Guid)(value ?? Guid.Empty);        else if (NameColumn.IsEqualTo(property))        {            Value.Name = (value as string) ?? "";            TextBox.Text = Value.Name;        }    }    protected override IEnumerable<KeyValuePair<string, object?>> GetChildValues()    {        yield return new(IDColumn.Property, Value.ID);        yield return new(NameColumn.Property, Value.Name);    }    public override void SetColor(Color color)    {        TextBox.Background = IsEnabled ? new SolidColorBrush(color) : new SolidColorBrush(Colors.WhiteSmoke);    }    public override void SetFocus()    {        Select.Focus();    }}
 |