using Lattice.Core.Docking.Abstractions; using Lattice.Core.Docking.Engine; using Lattice.UI.Docking.Abstractions; using System.ComponentModel; namespace Lattice.UI.Docking.Implementations; /// /// Базовая реализация контрола док-системы. /// public abstract class DockControlBase : IDockControl, INotifyPropertyChanged { /// public event PropertyChangedEventHandler? PropertyChanged; private IDockElement? _model; private LayoutManager? _layoutManager; private IDockContextManager? _contextManager; private bool _isSelected; private bool _isActive; /// public IDockElement? Model { get => _model; set { if (_model != value) { _model = value; OnPropertyChanged(nameof(Model)); } } } /// public LayoutManager? LayoutManager { get => _layoutManager; set { if (_layoutManager != value) { _layoutManager = value; OnPropertyChanged(nameof(LayoutManager)); } } } /// public IDockContextManager? ContextManager { get => _contextManager; set { if (_contextManager != value) { _contextManager = value; OnPropertyChanged(nameof(ContextManager)); } } } /// public bool IsSelected { get => _isSelected; set { if (_isSelected != value) { _isSelected = value; OnPropertyChanged(nameof(IsSelected)); } } } /// public bool IsActive { get => _isActive; set { if (_isActive != value) { _isActive = value; OnPropertyChanged(nameof(IsActive)); } } } /// public abstract void Refresh(); /// public abstract void ApplyTheme(IDockTheme theme); /// public virtual void OnModelPropertyChanged(string propertyName) { // Базовая реализация просто обновляет весь контрол Refresh(); } /// /// Вызывает событие . /// /// Имя измененного свойства. protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }