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