// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Widgets/SCompoundWidget.h" #include "Widgets/Views/STreeView.h" class UChooserTable; namespace UE::ChooserEditor { class FChooserTableEditor; struct FNestedChooserTreeEntry { UChooserTable* Chooser = nullptr; bool bExpanded = true; }; class SNestedChooserTree : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SNestedChooserTree) {} SLATE_ARGUMENT(FChooserTableEditor*, ChooserEditor) SLATE_END_ARGS() void Construct(const FArguments& InArgs); virtual ~SNestedChooserTree() override; void RefreshAll(); private: TSharedPtr TreeViewContextMenuOpening(); TSharedRef TreeViewGenerateRow(TSharedPtr InItem, const TSharedRef& OwnerTable); void TreeViewGetChildren(TSharedPtr InItem, TArray>& OutChildren); void TreeViewDoubleClicked(TSharedPtr SelectedObject); void DeleteNestedChooser(); void RenameNestedChooser(); FChooserTableEditor* ChooserEditor = nullptr; UChooserTable* RootChooser = nullptr; TSharedPtr>> TreeView; TArray> TreeEntries; TArray> AllChoosers; }; }