using Lattice.Core.Docking.Abstractions; using Lattice.Core.Docking.Models; using Lattice.UI.Docking.Abstractions; namespace Lattice.UI.Docking.Factories; /// /// Базовая фабрика для создания UI-контролов док-системы. /// public abstract class DockControlFactoryBase : IDockControlFactory { /// /// Получает или задает сервис перетаскивания для создаваемых контролов. /// public Services.IDockDragDropService? DragDropService { get; set; } /// /// Получает или задает менеджер контекста для создаваемых контролов. /// public Services.IDockContextManager? ContextManager { get; set; } /// public abstract IDockGroupControl CreateGroupControl(DockGroup group); /// public abstract IDockLeafControl CreateLeafControl(DockLeaf leaf); /// public abstract IFloatingWindowControl CreateFloatingWindowControl(DockWindow window); /// public abstract IAutoHidePanelControl CreateAutoHidePanelControl(AutoHidePanel panel); /// public abstract IDockSplitterControl CreateSplitterControl(SplitDirection orientation); /// /// Создает контрол для произвольного элемента док-системы. /// public virtual IDockControl? CreateControlForElement(IDockElement element) { return element switch { DockGroup group => CreateGroupControl(group), DockLeaf leaf => CreateLeafControl(leaf), _ => null }; } /// /// Настраивает общие свойства контрола. /// protected virtual void ConfigureControl(IDockControl control) { if (DragDropService != null) { control.DragDropService = DragDropService; } if (ContextManager != null) { control.ContextManager = ContextManager; } } }