using System.Windows;
using System.Windows.Media;

namespace HandyControl.Controls;

public class VisualElement
{
    public static readonly DependencyProperty HighlightBrushProperty = DependencyProperty.RegisterAttached(
        "HighlightBrush", typeof(Brush), typeof(VisualElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));

    public static void SetHighlightBrush(DependencyObject element, Brush value)
        => element.SetValue(HighlightBrushProperty, value);

    public static Brush GetHighlightBrush(DependencyObject element)
        => (Brush) element.GetValue(HighlightBrushProperty);

    public static readonly DependencyProperty HighlightBackgroundProperty = DependencyProperty.RegisterAttached(
        "HighlightBackground", typeof(Brush), typeof(VisualElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));

    public static void SetHighlightBackground(DependencyObject element, Brush value)
        => element.SetValue(HighlightBackgroundProperty, value);

    public static Brush GetHighlightBackground(DependencyObject element)
        => (Brush) element.GetValue(HighlightBackgroundProperty);

    public static readonly DependencyProperty HighlightBorderBrushProperty = DependencyProperty.RegisterAttached(
        "HighlightBorderBrush", typeof(Brush), typeof(VisualElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));

    public static void SetHighlightBorderBrush(DependencyObject element, Brush value)
        => element.SetValue(HighlightBorderBrushProperty, value);

    public static Brush GetHighlightBorderBrush(DependencyObject element)
        => (Brush) element.GetValue(HighlightBorderBrushProperty);

    public static readonly DependencyProperty HighlightForegroundProperty = DependencyProperty.RegisterAttached(
        "HighlightForeground", typeof(Brush), typeof(VisualElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));

    public static void SetHighlightForeground(DependencyObject element, Brush value)
        => element.SetValue(HighlightForegroundProperty, value);

    public static Brush GetHighlightForeground(DependencyObject element)
        => (Brush) element.GetValue(HighlightForegroundProperty);

    public static readonly DependencyProperty TextProperty = DependencyProperty.RegisterAttached(
        "Text", typeof(string), typeof(VisualElement), new PropertyMetadata(default(string)));

    public static void SetText(DependencyObject element, string value)
        => element.SetValue(TextProperty, value);

    public static string GetText(DependencyObject element)
        => (string) element.GetValue(TextProperty);
}
