using Lattice.Core.Docking.Abstractions; using Lattice.Core.Docking.Engine; using System.ComponentModel; namespace Lattice.UI.Docking.Abstractions; /// /// Определяет базовый контракт для всех UI-контролов, участвующих в системе докинга. /// Этот интерфейс предоставляет общие свойства и методы, необходимые для интеграции /// с менеджером макета и системой перетаскивания. /// /// /// Реализации этого интерфейса должны отображать элементы док-системы (DockGroup, DockLeaf) /// и обеспечивать взаимодействие пользователя с ними через жесты мыши, клавиатуру и сенсорный ввод. /// public interface IDockControl : INotifyPropertyChanged { /// /// Получает или задает модель данных, связанную с этим контролом. /// /// /// Экземпляр класса, реализующего , который представляет /// состояние и структуру отображаемого элемента док-системы. /// IDockElement? Model { get; set; } /// /// Получает или задает менеджер макета, к которому принадлежит этот контрол. /// /// /// Экземпляр , управляющий структурой док-системы. /// LayoutManager? LayoutManager { get; set; } /// /// Получает или задает сервис перетаскивания, используемый этим контролом. /// /// /// Реализация для обработки операций перетаскивания. /// IDragDropService? DragDropService { get; set; } /// /// Получает или задает контекстный менеджер для этого контрола. /// /// /// Экземпляр , управляющий контекстными меню и действиями. /// IDockContextManager? ContextManager { get; set; } /// /// Получает или задает признак того, что контрол выбран. /// /// /// true, если контрол выбран; в противном случае — false. /// bool IsSelected { get; set; } /// /// Получает или задает признак того, что контрол активен. /// /// /// true, если контрол активен; в противном случае — false. /// bool IsActive { get; set; } /// /// Получает или задает признак того, что контрол можно перетаскивать. /// /// /// true, если контрол можно перетаскивать; в противном случае — false. /// bool CanDrag { get; set; } /// /// Получает или задает признак того, что контрол может принимать сброс. /// /// /// true, если контрол может принимать сброс; в противном случае — false. /// bool CanDrop { get; set; } /// /// Обновляет внешний вид контрола в соответствии с текущим состоянием модели. /// /// /// Этот метод должен вызываться при изменении свойств модели или при необходимости /// принудительного обновления UI (например, после изменения темы или масштаба). /// void Refresh(); /// /// Применяет указанную тему к контролу. /// /// Тема для применения. void ApplyTheme(IDockTheme theme); /// /// Вызывается при изменении состояния модели для обновления UI. /// /// Имя изменившегося свойства модели. void OnModelPropertyChanged(string propertyName); }