Files
XCEngine/editor/app/Windowing/Content/EditorWorkspaceWindowContentController.h

81 lines
3.5 KiB
C
Raw Normal View History

2026-04-25 16:46:01 +08:00
#pragma once
#include "Composition/EditorShellRuntime.h"
#include "Windowing/Content/EditorWindowContentController.h"
#include "Windowing/Frame/EditorWindowFrameOrchestrator.h"
2026-04-25 16:46:01 +08:00
#include <XCEditor/Workspace/UIEditorWorkspaceController.h>
#include <memory>
namespace XCEngine::UI::Editor::App {
class EditorWorkspaceWindowContentController final
: public EditorWindowContentController
, public EditorWindowWorkspaceBinding
, public EditorWindowDockHostBinding
, public EditorWindowInputFeedbackBinding
, public EditorWindowTitleBarBinding {
public:
explicit EditorWorkspaceWindowContentController(UIEditorWorkspaceController workspaceController);
~EditorWorkspaceWindowContentController() override;
2026-04-25 17:51:37 +08:00
EditorWindowContentCapabilities GetCapabilities() const override;
2026-04-25 16:46:01 +08:00
EditorWindowWorkspaceBinding* TryGetWorkspaceBinding() override;
const EditorWindowWorkspaceBinding* TryGetWorkspaceBinding() const override;
EditorWindowDockHostBinding* TryGetDockHostBinding() override;
const EditorWindowDockHostBinding* TryGetDockHostBinding() const override;
const EditorWindowInputFeedbackBinding* TryGetInputFeedbackBinding() const override;
const EditorWindowTitleBarBinding* TryGetTitleBarBinding() const override;
const UIEditorWorkspaceController* TryGetWorkspaceController() const override;
void ReplaceWorkspaceController(UIEditorWorkspaceController workspaceController) override;
void Initialize(const EditorWindowContentInitializationContext& context) override;
void Shutdown() override;
void ResetInteractionState() override;
void SetViewportSurfacePresentationEnabled(bool enabled) override;
EditorWindowFrameTransferRequests UpdateAndAppend(
const EditorWindowContentFrameContext& context,
::XCEngine::UI::UIDrawData& drawData) override;
void RenderRequestedViewports(
const ::XCEngine::Rendering::RenderContext& renderContext) override;
const UIEditorShellInteractionFrame& GetShellFrame() const override;
const UIEditorShellInteractionState& GetShellInteractionState() const override;
void SetExternalDockHostDropPreview(
const Widgets::UIEditorDockHostDropPreviewState& preview) override;
void ClearExternalDockHostDropPreview() override;
bool TryResolveDockTabDragHotspot(
std::string_view nodeId,
std::string_view panelId,
const ::XCEngine::UI::UIPoint& point,
::XCEngine::UI::UIPoint& outHotspot) const override;
UIEditorDockHostTabDropTarget ResolveDockTabDropTarget(
const ::XCEngine::UI::UIPoint& point) const override;
bool HasHostedContentCapture() const override;
bool HasShellInteractiveCapture() const override;
bool HasInteractiveCapture() const override;
EditorWindowContentCursorKind GetHostedContentCursorKind() const override;
EditorWindowContentCursorKind GetDockCursorKind() const override;
::XCEngine::UI::UISize ResolveMinimumOuterSize() const override;
bool ShouldUseDetachedTitleBarTabStrip() const override;
std::string ResolveTabStripTitleText(std::string_view fallbackTitle) const override;
std::string ResolveDetachedWindowTitleText(
std::string_view fallbackWindowTitle) const override;
private:
UIEditorWorkspaceController m_workspaceController = {};
EditorShellRuntime m_shellRuntime = {};
EditorWindowFrameOrchestrator m_frameOrchestrator = {};
};
std::unique_ptr<EditorWindowContentController> CreateEditorWorkspaceWindowContentController(
UIEditorWorkspaceController workspaceController);
} // namespace XCEngine::UI::Editor::App