// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MVVM/ViewModelPtr.h" #include "Sidebar/ISidebarDrawerContent.h" #include "Templates/SharedPointerFwd.h" class FMenuBuilder; class FName; class FSequencer; class FText; class ISidebarChannelExtension; class SVerticalBox; class SWidget; struct FCurveChannelSectionSidebarExtension; struct FKeyEditData; namespace UE::Sequencer { class FChannelGroupOutlinerModel; class FSequencerSelection; } class FSequencerSelectionDrawer : public ISidebarDrawerContent { public: static const FName UniqueId; FSequencerSelectionDrawer(const TWeakPtr& InWeakSequencer); virtual ~FSequencerSelectionDrawer() override; //~ Begin ISidebarDrawerContent virtual FName GetUniqueId() const override; virtual FName GetSectionId() const override; virtual FText GetSectionDisplayText() const override; virtual TSharedRef CreateContentWidget() override; //~ End ISidebarDrawerContent protected: void OnSequencerSelectionChanged(); void UpdateFromSelectionNextFrame(); void BuildKeySelectionDetails(const TSharedRef& InSelection, FMenuBuilder& MenuBuilder); void BuildTrackAreaDetails(const TSharedRef& InSelection, FMenuBuilder& MenuBuilder); void BuildOutlinerDetails(const TSharedRef& InSelection, FMenuBuilder& MenuBuilder); void BuildMarkedFrameDetails(const TSharedRef& InSelection, FMenuBuilder& MenuBuilder); void BuildExtensionDetails(const TSet>& InChannelGroups, FMenuBuilder& MenuBuilder); TSharedRef CreateHintText(const FText& InMessage); TSharedRef CreateNoSelectionHintText(); FKeyEditData GetKeyEditData() const; TSharedPtr CreateKeyFrameDetails(const TSharedRef& InSequencerSelection); void ResetContent(); bool AreAllSameNames(const TArray& InNames) const; TWeakPtr WeakSequencer; TSharedPtr ContentBox; TSharedPtr CurveChannelExtension; TArray> ChannelExtensions; bool bWaitingToHandleSelectionChanged = false; };