#pragma once #include #include #include namespace XCEngine::UI::Editor { class EditorWindowWorkspaceStore final { public: explicit EditorWindowWorkspaceStore(UIEditorPanelRegistry panelRegistry); const UIEditorPanelRegistry& GetPanelRegistry() const { return m_panelRegistry; } bool ValidateWindowSet( const UIEditorWindowWorkspaceSet& windowSet, std::string& outError) const; bool TrySetWindowSet( UIEditorWindowWorkspaceSet windowSet, std::string& outError); void ClearWindowSet() { m_windowSet = {}; } bool IsPrimaryWindowId(std::string_view windowId) const; const UIEditorWindowWorkspaceSet& GetWindowSet() const { return m_windowSet; } UIEditorWindowWorkspaceState* FindMutableWindowState(std::string_view windowId); private: UIEditorPanelRegistry m_panelRegistry = {}; UIEditorWindowWorkspaceSet m_windowSet = {}; }; } // namespace XCEngine::UI::Editor