#include "Windowing/Content/EditorWindowContentFactory.h" #include "Windowing/Content/EditorUtilityWindowContentController.h" #include "Windowing/Content/EditorWorkspaceWindowContentController.h" #include #include namespace XCEngine::UI::Editor::App { namespace { class DefaultEditorWindowContentFactory final : public EditorWindowContentFactory { public: DefaultEditorWindowContentFactory( EditorWindowSystem& windowSystem, EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory, EditorUtilityWindowPanelFactory utilityPanelFactory) : m_windowSystem(windowSystem) , m_workspacePanelFactory(std::move(workspacePanelFactory)) , m_utilityPanelFactory(std::move(utilityPanelFactory)) {} std::unique_ptr CreateWorkspaceContentController( const UIEditorWindowWorkspaceState& windowState) const override { EditorWorkspacePanelRuntimeSet workspacePanels = m_workspacePanelFactory ? m_workspacePanelFactory() : EditorWorkspacePanelRuntimeSet{}; return CreateEditorWorkspaceWindowContentController( windowState, m_windowSystem, std::move(workspacePanels)); } std::unique_ptr CreateUtilityContentController( const EditorUtilityWindowDescriptor& descriptor) const override { std::unique_ptr panel = m_utilityPanelFactory ? m_utilityPanelFactory(descriptor.kind) : nullptr; return CreateEditorUtilityWindowContentController( descriptor, std::move(panel)); } private: EditorWindowSystem& m_windowSystem; EditorWorkspacePanelRuntimeSetFactory m_workspacePanelFactory = {}; EditorUtilityWindowPanelFactory m_utilityPanelFactory = {}; }; } // namespace std::unique_ptr CreateDefaultEditorWindowContentFactory( EditorWindowSystem& windowSystem, EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory, EditorUtilityWindowPanelFactory utilityPanelFactory) { return std::make_unique( windowSystem, std::move(workspacePanelFactory), std::move(utilityPanelFactory)); } } // namespace XCEngine::UI::Editor::App