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; } }