66 lines
2.4 KiB
C++
66 lines
2.4 KiB
C++
#include "Windowing/Content/EditorWindowContentFactory.h"
|
|
|
|
#include "Windowing/Content/EditorUtilityWindowContentController.h"
|
|
#include "Windowing/Content/EditorWorkspaceWindowContentController.h"
|
|
|
|
#include <XCEditor/Windowing/System/EditorWindowSystem.h>
|
|
|
|
#include <utility>
|
|
|
|
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<EditorWindowContentController> CreateWorkspaceContentController(
|
|
const UIEditorWindowWorkspaceState& windowState) const override {
|
|
EditorWorkspacePanelRuntimeSet workspacePanels =
|
|
m_workspacePanelFactory
|
|
? m_workspacePanelFactory()
|
|
: EditorWorkspacePanelRuntimeSet{};
|
|
return CreateEditorWorkspaceWindowContentController(
|
|
windowState,
|
|
m_windowSystem,
|
|
std::move(workspacePanels));
|
|
}
|
|
|
|
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));
|
|
}
|
|
|
|
private:
|
|
EditorWindowSystem& m_windowSystem;
|
|
EditorWorkspacePanelRuntimeSetFactory m_workspacePanelFactory = {};
|
|
EditorUtilityWindowPanelFactory m_utilityPanelFactory = {};
|
|
};
|
|
|
|
} // namespace
|
|
|
|
std::unique_ptr<EditorWindowContentFactory> CreateDefaultEditorWindowContentFactory(
|
|
EditorWindowSystem& windowSystem,
|
|
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
|
|
EditorUtilityWindowPanelFactory utilityPanelFactory) {
|
|
return std::make_unique<DefaultEditorWindowContentFactory>(
|
|
windowSystem,
|
|
std::move(workspacePanelFactory),
|
|
std::move(utilityPanelFactory));
|
|
}
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|