Files
XCEngine/editor/app/Windowing/Content/EditorWindowContentFactory.cpp

66 lines
2.4 KiB
C++
Raw Normal View History

2026-04-25 19:25:49 +08:00
#include "Windowing/Content/EditorWindowContentFactory.h"
#include "Windowing/Content/EditorUtilityWindowContentController.h"
#include "Windowing/Content/EditorWorkspaceWindowContentController.h"
2026-04-26 16:27:13 +08:00
#include <XCEditor/Windowing/System/EditorWindowSystem.h>
2026-04-25 19:25:49 +08:00
#include <utility>
namespace XCEngine::UI::Editor::App {
namespace {
class DefaultEditorWindowContentFactory final : public EditorWindowContentFactory {
public:
2026-04-27 13:40:26 +08:00
DefaultEditorWindowContentFactory(
EditorWindowSystem& windowSystem,
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
EditorUtilityWindowPanelFactory utilityPanelFactory)
2026-04-27 13:40:26 +08:00
: m_windowSystem(windowSystem)
, m_workspacePanelFactory(std::move(workspacePanelFactory))
, m_utilityPanelFactory(std::move(utilityPanelFactory)) {}
2026-04-26 13:44:19 +08:00
2026-04-25 19:25:49 +08:00
std::unique_ptr<EditorWindowContentController> CreateWorkspaceContentController(
2026-04-26 13:44:19 +08:00
const UIEditorWindowWorkspaceState& windowState) const override {
2026-04-27 13:40:26 +08:00
EditorWorkspacePanelRuntimeSet workspacePanels =
m_workspacePanelFactory
? m_workspacePanelFactory()
: EditorWorkspacePanelRuntimeSet{};
return CreateEditorWorkspaceWindowContentController(
windowState,
m_windowSystem,
std::move(workspacePanels));
2026-04-25 19:25:49 +08:00
}
std::unique_ptr<EditorWindowContentController> CreateUtilityContentController(
const EditorUtilityWindowDescriptor& descriptor) const override {
std::unique_ptr<EditorUtilityWindowPanel> panel =
m_utilityPanelFactory
? m_utilityPanelFactory(descriptor.kind)
: nullptr;
return CreateEditorUtilityWindowContentController(
descriptor,
std::move(panel));
2026-04-25 19:25:49 +08:00
}
2026-04-26 13:44:19 +08:00
private:
EditorWindowSystem& m_windowSystem;
2026-04-27 13:40:26 +08:00
EditorWorkspacePanelRuntimeSetFactory m_workspacePanelFactory = {};
EditorUtilityWindowPanelFactory m_utilityPanelFactory = {};
2026-04-25 19:25:49 +08:00
};
} // namespace
2026-04-26 13:44:19 +08:00
std::unique_ptr<EditorWindowContentFactory> CreateDefaultEditorWindowContentFactory(
2026-04-27 13:40:26 +08:00
EditorWindowSystem& windowSystem,
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
EditorUtilityWindowPanelFactory utilityPanelFactory) {
2026-04-27 13:40:26 +08:00
return std::make_unique<DefaultEditorWindowContentFactory>(
windowSystem,
std::move(workspacePanelFactory),
std::move(utilityPanelFactory));
2026-04-25 19:25:49 +08:00
}
} // namespace XCEngine::UI::Editor::App