#pragma once #include #include namespace XCEngine::UI::Editor { class UIEditorWorkspaceController; } // namespace XCEngine::UI::Editor namespace XCEngine::UI::Editor::App { class EditorWindowContentController; class EditorWindowSystem; struct EditorUtilityWindowDescriptor; class EditorWindowContentFactory { public: virtual ~EditorWindowContentFactory() = default; virtual std::unique_ptr CreateWorkspaceContentController( std::string_view windowId, UIEditorWorkspaceController workspaceController, EditorWindowSystem& windowSystem) const = 0; virtual std::unique_ptr CreateUtilityContentController( const EditorUtilityWindowDescriptor& descriptor) const = 0; }; std::unique_ptr CreateDefaultEditorWindowContentFactory(); } // namespace XCEngine::UI::Editor::App