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