// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Widgets/IToolTip.h" #include "Widgets/SToolTip.h" class SGridPanel; namespace Insights { class FTable; class FTableColumn; class FTableTreeNode; //////////////////////////////////////////////////////////////////////////////////////////////////// /** Tooltip for STableTreeView widget. */ class STableTreeViewTooltip { public: STableTreeViewTooltip() = delete; static TSharedPtr GetTableTooltip(const FTable& Table); static TSharedPtr GetColumnTooltip(const FTableColumn& Column); static TSharedPtr GetRowTooltip(const TSharedPtr TreeNodePtr); private: static void AddGridRow(TSharedPtr Grid, int32& Row, const FText& Name, const FText& Value); }; //////////////////////////////////////////////////////////////////////////////////////////////////// class STableTreeRowToolTip: public IToolTip { public: STableTreeRowToolTip(const TSharedPtr InTreeNodePtr): TreeNodePtr(InTreeNodePtr) {} virtual ~STableTreeRowToolTip() {} virtual TSharedRef AsWidget() { CreateToolTipWidget(); return ToolTipWidget.ToSharedRef(); } virtual TSharedRef GetContentWidget() { CreateToolTipWidget(); return ToolTipWidget->GetContentWidget(); } virtual void SetContentWidget(const TSharedRef& InContentWidget) { CreateToolTipWidget(); ToolTipWidget->SetContentWidget(InContentWidget); } void InvalidateWidget() { ToolTipWidget.Reset(); } virtual bool IsEmpty() const { return false; } virtual bool IsInteractive() const { return false; } virtual void OnOpening() {} virtual void OnClosed() {} private: void CreateToolTipWidget() { if (!ToolTipWidget.IsValid()) { ToolTipWidget = STableTreeViewTooltip::GetRowTooltip(TreeNodePtr); } } private: TSharedPtr ToolTipWidget; const TSharedPtr TreeNodePtr; }; //////////////////////////////////////////////////////////////////////////////////////////////////// } // namespace Insights