// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" #include "Types/SlateEnums.h" struct FEdGraphPinType; class UAnimGraphNode_LinkedInputPose; class SEditableTextBox; class FAnimBlueprintFunctionPinInfoDetails : public IPropertyTypeCustomization { public: static TSharedRef MakeInstance() { return MakeShareable(new FAnimBlueprintFunctionPinInfoDetails()); } // IDetailCustomization interface virtual void CustomizeHeader(TSharedRef InStructPropertyHandle, FDetailWidgetRow& InHeaderRow, IPropertyTypeCustomizationUtils& InStructCustomizationUtils) override; virtual void CustomizeChildren(TSharedRef InStructPropertyHandle, IDetailChildrenBuilder& InChildBuilder, IPropertyTypeCustomizationUtils& InStructCustomizationUtils) {}; private: /** Check to see if this name is valid */ bool IsNameValid(const FString& InNewName); /** UI handlers */ FEdGraphPinType GetTargetPinType() const; void HandlePinTypeChanged(const FEdGraphPinType& InPinType); void HandleTextChanged(const FText& InNewText); void HandleTextCommitted(const FText& InNewText, ETextCommit::Type InCommitType); private: /** Property handles to edit */ TSharedPtr NamePropertyHandle; TSharedPtr TypePropertyHandle; TSharedPtr StructPropertyHandle; /** Text box for editing names */ TSharedPtr NameTextBox; /** The node we are editing on */ TWeakObjectPtr WeakOuterNode; };