using Lattice.Core.Docking.Models; using Lattice.UI.Docking.Abstractions; namespace Lattice.UI.Docking.Factories; /// /// Определяет контракт для фабрики, создающей UI-контролы для элементов док-системы. /// public interface IDockControlFactory { /// /// Создает контрол для группы разделения. /// /// Модель группы. /// Созданный контрол группы. IDockGroupControl CreateGroupControl(DockGroup group); /// /// Создает контрол для контейнера вкладок. /// /// Модель листа. /// Созданный контрол листа. IDockLeafControl CreateLeafControl(DockLeaf leaf); /// /// Создает контрол для плавающего окна. /// /// Модель окна. /// Созданный контрол окна. IFloatingWindowControl CreateFloatingWindowControl(DockWindow window); /// /// Создает контрол для автоскрываемой панели. /// /// Модель панели. /// Созданный контрол панели. IAutoHidePanelControl CreateAutoHidePanelControl(AutoHidePanel panel); /// /// Создает контрол для разделителя. /// /// Ориентация разделителя. /// Созданный контрол разделителя. IDockSplitterControl CreateSplitterControl(SplitDirection orientation); } /// /// Определяет контракт для контрола разделителя. /// public interface IDockSplitterControl : IDockControl { /// /// Получает или задает ориентацию разделителя. /// SplitDirection Orientation { get; set; } /// /// Получает или задает признак того, что разделитель активен. /// bool IsActive { get; set; } /// /// Событие, возникающее при начале перетаскивания разделителя. /// event EventHandler DragStarted; /// /// Событие, возникающее при перетаскивании разделителя. /// event EventHandler DragDelta; /// /// Событие, возникающее при завершении перетаскивания разделителя. /// event EventHandler DragCompleted; } /// /// Аргументы события перетаскивания разделителя. /// public class SplitterDraggedEventArgs : EventArgs { /// /// Изменение по горизонтали. /// public double HorizontalChange { get; } /// /// Изменение по вертикали. /// public double VerticalChange { get; } /// /// Инициализирует новый экземпляр класса . /// public SplitterDraggedEventArgs(double horizontalChange, double verticalChange) { HorizontalChange = horizontalChange; VerticalChange = verticalChange; } }