88 lines
3.9 KiB
C#
88 lines
3.9 KiB
C#
using Lattice.Core.Docking.Abstractions;
|
||
using Lattice.Core.Docking.Models;
|
||
using Lattice.UI.Docking.Abstractions;
|
||
|
||
namespace Lattice.UI.Docking.Factories;
|
||
|
||
/// <summary>
|
||
/// Определяет контракт для фабрики, создающей UI-контролы для элементов док-системы.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Фабрика обеспечивает абстракцию над созданием конкретных UI-контролов,
|
||
/// что позволяет легко заменять реализации для разных платформ или тем оформления.
|
||
/// </remarks>
|
||
public interface IDockControlFactory
|
||
{
|
||
/// <summary>
|
||
/// Создает контрол для группы разделения.
|
||
/// </summary>
|
||
/// <param name="group">Модель группы.</param>
|
||
/// <returns>
|
||
/// Созданный контрол группы.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, если <paramref name="group"/> равен null.
|
||
/// </exception>
|
||
IDockGroupControl CreateGroupControl(DockGroup group);
|
||
|
||
/// <summary>
|
||
/// Создает контрол для контейнера вкладок.
|
||
/// </summary>
|
||
/// <param name="leaf">Модель листа.</param>
|
||
/// <returns>
|
||
/// Созданный контрол листа.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, если <paramref name="leaf"/> равен null.
|
||
/// </exception>
|
||
IDockLeafControl CreateLeafControl(DockLeaf leaf);
|
||
|
||
/// <summary>
|
||
/// Создает контрол для плавающего окна.
|
||
/// </summary>
|
||
/// <param name="window">Модель окна.</param>
|
||
/// <returns>
|
||
/// Созданный контрол окна.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, если <paramref name="window"/> равен null.
|
||
/// </exception>
|
||
IFloatingWindowControl CreateFloatingWindowControl(DockWindow window);
|
||
|
||
/// <summary>
|
||
/// Создает контрол для автоскрываемой панели.
|
||
/// </summary>
|
||
/// <param name="panel">Модель панели.</param>
|
||
/// <returns>
|
||
/// Созданный контрол панели.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, если <paramref name="panel"/> равен null.
|
||
/// </exception>
|
||
IAutoHidePanelControl CreateAutoHidePanelControl(AutoHidePanel panel);
|
||
|
||
/// <summary>
|
||
/// Создает контрол для разделителя.
|
||
/// </summary>
|
||
/// <param name="orientation">Ориентация разделителя.</param>
|
||
/// <returns>
|
||
/// Созданный контрол разделителя.
|
||
/// </returns>
|
||
IDockSplitterControl CreateSplitterControl(SplitDirection orientation);
|
||
|
||
/// <summary>
|
||
/// Создает контрол для произвольного элемента док-системы.
|
||
/// </summary>
|
||
/// <param name="element">Элемент для создания контрола.</param>
|
||
/// <returns>
|
||
/// Созданный контрол или null, если тип элемента не поддерживается.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, если <paramref name="element"/> равен null.
|
||
/// </exception>
|
||
/// <remarks>
|
||
/// Метод использует сопоставление с шаблоном для определения типа элемента
|
||
/// и вызова соответствующего метода создания.
|
||
/// </remarks>
|
||
IDockControl? CreateControlForElement(IDockElement element);
|
||
} |