using Lattice.Core.Docking.Abstractions;
namespace Lattice.Core.Docking.Models;
///
/// Представляет автоскрываемую панель, которая может быть прикреплена к одной из сторон окна.
/// Автоскрываемые панели скрываются, оставляя видимой только заголовок, и разворачиваются при наведении курсора или клике.
///
public class AutoHidePanel
{
///
/// Инициализирует новый экземпляр класса .
///
/// Содержимое панели.
/// Сторона окна для прикрепления панели.
/// Выбрасывается, когда равен null.
public AutoHidePanel(IDockContent content, DockSide side)
{
Content = content ?? throw new ArgumentNullException(nameof(content));
Side = side;
}
///
/// Получает уникальный идентификатор панели.
///
public string Id { get; } = Guid.NewGuid().ToString();
///
/// Получает содержимое панели.
///
public IDockContent Content { get; }
///
/// Получает или задает сторону окна, к которой прикреплена панель.
///
public DockSide Side { get; set; }
///
/// Получает или задает размер панели в пикселях.
/// Для левой/правой сторон - ширина, для верхней/нижней - высота.
///
public double Size { get; set; } = 300;
///
/// Получает или задает значение, указывающее, видима ли панель.
///
public bool IsVisible { get; set; }
///
/// Получает или задает смещение для анимации выезда/заезда панели.
/// Значение от 0.0 (полностью скрыта) до 1.0 (полностью развернута).
///
public double SlideOffset { get; set; }
///
/// Получает заголовок панели, взятый из содержимого.
///
public string Title => Content?.Title ?? "Auto-hide Panel";
///
/// Переключает видимость панели.
///
public void Toggle()
{
IsVisible = !IsVisible;
}
///
/// Показывает панель.
///
public void Show()
{
IsVisible = true;
}
///
/// Скрывает панель.
///
public void Hide()
{
IsVisible = false;
}
}