// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" namespace Insights { class FTableColumn; //////////////////////////////////////////////////////////////////////////////////////////////////// /** * Table View Model. * View model class for the STableListView and STableTreeView widgets. */ class FTable: public TSharedFromThis { public: FTable(); virtual ~FTable(); const FName& GetName() const { return Name; } FText GetDisplayName() const { return FText::FromName(Name); } const FText& GetDescription() const { return Description; } virtual void Reset(); int32 GetColumnCount() const { return Columns.Num(); } bool IsValid() const { return Columns.Num() > 0; } const TArray>& GetColumns() const { return Columns; } void SetColumns(const TArray>& InColumns); void GetVisibleColumns(TArray>& InArray) const; TSharedRef FindColumnChecked(const FName& ColumnId) const { return ColumnIdToPtrMapping.FindChecked(ColumnId); } TSharedPtr FindColumn(const FName& ColumnId) const { const TSharedRef* const ColumnRefPtr = ColumnIdToPtrMapping.Find(ColumnId); if (ColumnRefPtr != nullptr) { return *ColumnRefPtr; } return nullptr; } int32 GetColumnPositionIndex(const FName& ColumnId) const; void GetVisibleColumnsData(const TArray>& InNodes, FString& OutData) const; protected: void ResetColumns() { Columns.Reset(); } void AddColumn(TSharedRef Column); void AddHierarchyColumn(int32 ColumnIndex, const TCHAR* ColumnName); private: FName Name; FText Description; /** All available columns. */ TArray> Columns; /** Mapping between column Ids and FTableColumn shared refs. */ TMap> ColumnIdToPtrMapping; }; //////////////////////////////////////////////////////////////////////////////////////////////////// } // namespace Insights