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