87 lines
3.8 KiB
C++
87 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include "Composition/EditorShellRuntime.h"
|
|
#include "Windowing/Content/EditorWindowContentController.h"
|
|
#include "Windowing/Frame/EditorWindowFrameOrchestrator.h"
|
|
|
|
#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:
|
|
EditorWorkspaceWindowContentController(
|
|
std::string windowId,
|
|
UIEditorWorkspaceController workspaceController);
|
|
~EditorWorkspaceWindowContentController() override;
|
|
|
|
EditorWindowContentCapabilities GetCapabilities() const override;
|
|
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;
|
|
const EditorWorkspaceWindowProjection* TryGetWorkspaceProjection() const override;
|
|
void RefreshWorkspaceProjection(EditorWorkspaceWindowProjection projection) 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:
|
|
std::string m_windowId = {};
|
|
UIEditorWorkspaceController m_workspaceController = {};
|
|
EditorWorkspaceWindowProjection m_projection = {};
|
|
EditorShellRuntime m_shellRuntime = {};
|
|
EditorWindowFrameOrchestrator m_frameOrchestrator = {};
|
|
};
|
|
|
|
std::unique_ptr<EditorWindowContentController> CreateEditorWorkspaceWindowContentController(
|
|
std::string_view windowId,
|
|
UIEditorWorkspaceController workspaceController);
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|