Split utility window contracts from feature factories
This commit is contained in:
@@ -15,9 +15,11 @@ class DefaultEditorWindowContentFactory final : public EditorWindowContentFactor
|
||||
public:
|
||||
DefaultEditorWindowContentFactory(
|
||||
EditorWindowSystem& windowSystem,
|
||||
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory)
|
||||
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
|
||||
EditorUtilityWindowPanelFactory utilityPanelFactory)
|
||||
: m_windowSystem(windowSystem)
|
||||
, m_workspacePanelFactory(std::move(workspacePanelFactory)) {}
|
||||
, m_workspacePanelFactory(std::move(workspacePanelFactory))
|
||||
, m_utilityPanelFactory(std::move(utilityPanelFactory)) {}
|
||||
|
||||
std::unique_ptr<EditorWindowContentController> CreateWorkspaceContentController(
|
||||
const UIEditorWindowWorkspaceState& windowState) const override {
|
||||
@@ -33,22 +35,31 @@ public:
|
||||
|
||||
std::unique_ptr<EditorWindowContentController> CreateUtilityContentController(
|
||||
const EditorUtilityWindowDescriptor& descriptor) const override {
|
||||
return CreateEditorUtilityWindowContentController(descriptor);
|
||||
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) {
|
||||
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
|
||||
EditorUtilityWindowPanelFactory utilityPanelFactory) {
|
||||
return std::make_unique<DefaultEditorWindowContentFactory>(
|
||||
windowSystem,
|
||||
std::move(workspacePanelFactory));
|
||||
std::move(workspacePanelFactory),
|
||||
std::move(utilityPanelFactory));
|
||||
}
|
||||
|
||||
} // namespace XCEngine::UI::Editor::App
|
||||
|
||||
Reference in New Issue
Block a user