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