DragAndDrop core
This commit is contained in:
103
Lattice.UI.Docking/Abstractions/IDockControl.cs
Normal file
103
Lattice.UI.Docking/Abstractions/IDockControl.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user