// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" class FDetailWidgetRow; class IDetailChildrenBuilder; class IPropertyUtilities; struct FInterchangeTestPlanPipelineSettings; class FReply; class FInterchangeTestPlanPipelineSettingsLayout : public IPropertyTypeCustomization { public: /** Makes a new instance of this layout class for a specific detail view requesting it */ static TSharedRef MakeInstance(); FInterchangeTestPlanPipelineSettingsLayout(); virtual ~FInterchangeTestPlanPipelineSettingsLayout(); // IPropertyTypeCustomization interface virtual void CustomizeHeader(TSharedRef StructPropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; private: void RefreshLayout(); FReply EditPipelineSettings(); FReply ClearModifiedPipelineSettings(); private: FInterchangeTestPlanPipelineSettings* GetStruct() const; private: TSharedPtr PropertyUtilities; TSharedPtr StructProperty; };