#include "Content/EditorWindowContentFactory.h" #include "Content/EditorUtilityWindowContentController.h" #include "Content/EditorWorkspaceWindowContentController.h" #include #include namespace XCEngine::UI::Editor::App { namespace { class DefaultEditorWindowContentFactory final : public EditorWindowContentFactory { public: DefaultEditorWindowContentFactory( EditorWindowSystem& windowSystem, EditorWorkspaceShellRuntimeFactory workspaceShellRuntimeFactory, EditorUtilityWindowPanelFactory utilityPanelFactory) : m_windowSystem(windowSystem) , m_workspaceShellRuntimeFactory(std::move(workspaceShellRuntimeFactory)) , m_utilityPanelFactory(std::move(utilityPanelFactory)) {} std::unique_ptr CreateWorkspaceContentController( const UIEditorWindowWorkspaceState& windowState) const override { std::unique_ptr shellRuntime = m_workspaceShellRuntimeFactory ? m_workspaceShellRuntimeFactory() : nullptr; return CreateEditorWorkspaceWindowContentController( windowState, m_windowSystem, std::move(shellRuntime)); } 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; EditorWorkspaceShellRuntimeFactory m_workspaceShellRuntimeFactory = {}; EditorUtilityWindowPanelFactory m_utilityPanelFactory = {}; }; } // namespace std::unique_ptr CreateDefaultEditorWindowContentFactory( EditorWindowSystem& windowSystem, EditorWorkspaceShellRuntimeFactory workspaceShellRuntimeFactory, EditorUtilityWindowPanelFactory utilityPanelFactory) { return std::make_unique( windowSystem, std::move(workspaceShellRuntimeFactory), std::move(utilityPanelFactory)); } } // namespace XCEngine::UI::Editor::App