feat(new_editor): add standalone add-component utility window
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#pragma once
|
||||
|
||||
#include "Platform/Win32/EditorWindowContentController.h"
|
||||
|
||||
#include <XCEditor/Shell/UIEditorShellInteraction.h>
|
||||
|
||||
#include <XCEngine/UI/Types.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace XCEngine::UI::Editor::App {
|
||||
|
||||
struct EditorStandaloneUtilityWindowFrameContext {
|
||||
EditorContext& editorContext;
|
||||
const ::XCEngine::UI::UIRect& bounds;
|
||||
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents;
|
||||
bool focused = false;
|
||||
bool focusGained = false;
|
||||
bool focusLost = false;
|
||||
};
|
||||
|
||||
class EditorStandaloneUtilityWindowContentController
|
||||
: public EditorWindowContentController {
|
||||
public:
|
||||
explicit EditorStandaloneUtilityWindowContentController(
|
||||
const ::XCEngine::UI::UISize& minimumOuterSize);
|
||||
~EditorStandaloneUtilityWindowContentController() override;
|
||||
|
||||
const UIEditorWorkspaceController* TryGetWorkspaceController() const override;
|
||||
UIEditorWorkspaceController* TryGetMutableWorkspaceController() 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;
|
||||
|
||||
protected:
|
||||
virtual void OnShutdown();
|
||||
virtual void OnResetInteractionState();
|
||||
virtual EditorWindowFrameTransferRequests UpdateStandaloneContent(
|
||||
const EditorStandaloneUtilityWindowFrameContext& context,
|
||||
::XCEngine::UI::UIDrawData& drawData) = 0;
|
||||
|
||||
private:
|
||||
::XCEngine::UI::UISize m_minimumOuterSize = {};
|
||||
UIEditorShellInteractionState m_shellInteractionState = {};
|
||||
UIEditorShellInteractionFrame m_shellFrame = {};
|
||||
bool m_windowFocused = true;
|
||||
};
|
||||
|
||||
} // namespace XCEngine::UI::Editor::App
|
||||
Reference in New Issue
Block a user