using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using InABox.Core;
namespace InABox.DynamicGrid
{
public abstract class BaseDynamicEditorControl : ContentControl, IDynamicEditorControl
{
public static readonly DependencyProperty ColumnNameProperty =
DependencyProperty.Register(nameof(ColumnName), typeof(string), typeof(BaseDynamicEditorControl));
public static readonly DependencyProperty ColorProperty =
DependencyProperty.Register("Color", typeof(Color), typeof(BaseDynamicEditorControl));
public new static readonly DependencyProperty IsEnabledProperty =
DependencyProperty.Register(nameof(IsEnabled), typeof(bool), typeof(BaseDynamicEditorControl));
private IBaseEditor _editordefinition;
public BaseDynamicEditorControl()
{
Color = Colors.LightYellow;
}
public Color Color
{
get => (Color)GetValue(ColorProperty);
set
{
SetValue(ColorProperty, value);
if (EditorDefinition != null)
SetColor(Color);
}
}
public string ColumnName
{
get => (string)GetValue(ColumnNameProperty);
set => SetValue(ColumnNameProperty, value);
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IBaseEditor EditorDefinition
{
get => _editordefinition;
set
{
_editordefinition = value;
Content = CreateEditor();
SetColor(Color);
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool Loaded { get; set; }
public abstract bool Changed { get; set; }
public virtual event EditorControlValueChangedHandler OnEditorValueChanged;
public abstract int DesiredHeight();
public abstract void SetFocus();
public abstract void Configure();
public abstract void SetEnabled(bool enabled);
public abstract void SetVisible(bool visible);
public abstract void SetValue(string property, object? value);
///
///
///
/// The full property name of the entity being edited.
///
public abstract object? GetValue(string property);
public abstract Dictionary GetValues();
public new bool IsEnabled
{
get => (bool)GetValue(IsEnabledProperty);
set
{
SetValue(IsEnabledProperty, value);
SetEnabled(value);
}
}
protected abstract FrameworkElement CreateEditor();
public abstract int DesiredWidth();
public abstract void SetColor(Color color);
public IDynamicEditorHost Host { get; set; }
protected List