DragAndDrop core

This commit is contained in:
FrigaT
2026-01-18 16:33:35 +03:00
parent 9ea82af329
commit 79bdd8bc62
229 changed files with 21214 additions and 2494 deletions

View File

@@ -0,0 +1,97 @@
using Lattice.Core.Docking.Models;
namespace Lattice.UI.Docking.Abstractions;
/// <summary>
/// Определяет контракт для UI-контрола, который представляет автоскрываемую панель.
/// </summary>
/// <remarks>
/// Автоскрываемые панели прикреплены к одной из сторон окна и скрываются,
/// оставляя видимым только заголовок. При наведении курсора панель выезжает.
/// </remarks>
public interface IAutoHidePanelControl : IDockControl
{
/// <summary>
/// Получает или задает сторону прикрепления панели.
/// </summary>
/// <value>
/// Сторона окна, к которой прикреплена панель.
/// </value>
DockSide Side { get; set; }
/// <summary>
/// Получает или задает ширину панели (для левой/правой сторон).
/// </summary>
/// <value>
/// Ширина панели в пикселях.
/// </value>
double Width { get; set; }
/// <summary>
/// Получает или задает высоту панели (для верхней/нижней сторон).
/// </summary>
/// <value>
/// Высота панели в пикселях.
/// </value>
double Height { get; set; }
/// <summary>
/// Получает или задает признак видимости панели.
/// </summary>
/// <value>
/// true, если панель видима; в противном случае — false.
/// </value>
bool IsVisible { get; set; }
/// <summary>
/// Получает или задает признак того, что панель всегда видима.
/// </summary>
/// <value>
/// true, если панель всегда видима; в противном случае — false.
/// </value>
bool IsPinned { get; set; }
/// <summary>
/// Получает или задает задержку перед скрытием панели (в миллисекундах).
/// </summary>
/// <value>
/// Задержка в миллисекундах.
/// </value>
int AutoHideDelay { get; set; }
/// <summary>
/// Показывает панель.
/// </summary>
void Show();
/// <summary>
/// Скрывает панель.
/// </summary>
void Hide();
/// <summary>
/// Переключает состояние видимости панели.
/// </summary>
void Toggle();
/// <summary>
/// Задает фиксированное состояние панели.
/// </summary>
/// <param name="pinned">true, чтобы зафиксировать панель; false, чтобы разрешить автоскрытие.</param>
void SetPinned(bool pinned);
/// <summary>
/// Событие, возникающее при изменении видимости панели.
/// </summary>
event EventHandler VisibilityChanged;
/// <summary>
/// Событие, возникающее при наведении курсора на панель.
/// </summary>
event EventHandler MouseEntered;
/// <summary>
/// Событие, возникающее при уходе курсора с панели.
/// </summary>
event EventHandler MouseLeft;
}