Files
UnrealEngineUWP/Engine/Source/Editor/PropertyEditor/Private/CustomChildBuilder.h
ryan durand 627baf970a Updating copyright for Engine Editor.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870586 by ryan durand in Main branch]
2019-12-26 15:33:43 -05:00

49 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Widgets/SWidget.h"
#include "UObject/StructOnScope.h"
#include "PropertyHandle.h"
#include "IDetailChildrenBuilder.h"
#include "IDetailPropertyRow.h"
#include "DetailCategoryBuilderImpl.h"
class IDetailGroup;
class FCustomChildrenBuilder : public IDetailChildrenBuilder
{
public:
FCustomChildrenBuilder(TSharedRef<FDetailCategoryImpl> InParentCategory, TSharedPtr<IDetailGroup> InParentGroup = nullptr)
: ParentCategory(InParentCategory)
, ParentGroup(InParentGroup)
{}
virtual IDetailChildrenBuilder& AddCustomBuilder(TSharedRef<class IDetailCustomNodeBuilder> InCustomBuilder) override;
virtual IDetailGroup& AddGroup(FName GroupName, const FText& LocalizedDisplayName) override;
virtual FDetailWidgetRow& AddCustomRow(const FText& SearchString) override;
virtual IDetailPropertyRow& AddProperty(TSharedRef<IPropertyHandle> PropertyHandle) override;
virtual IDetailPropertyRow* AddExternalObjects(const TArray<UObject*>& Objects, FName UniqueIdName = NAME_None) override;
virtual IDetailPropertyRow* AddExternalObjectProperty(const TArray<UObject*>& Objects, FName PropertyName, const FAddPropertyParams& Params) override;
virtual IDetailPropertyRow* AddExternalStructure(TSharedRef<FStructOnScope> ChildStructure, FName UniqueIdName = NAME_None) override;
virtual IDetailPropertyRow* AddExternalStructureProperty(TSharedRef<FStructOnScope> ChildStructure, FName PropertyName, const FAddPropertyParams& Params) override;
virtual TArray<TSharedPtr<IPropertyHandle>> AddAllExternalStructureProperties(TSharedRef<FStructOnScope> ChildStructure) override;
virtual TSharedRef<SWidget> GenerateStructValueWidget(TSharedRef<IPropertyHandle> StructPropertyHandle) override;
virtual IDetailCategoryBuilder& GetParentCategory() const override;
virtual IDetailGroup* GetParentGroup() const override;
const TArray< FDetailLayoutCustomization >& GetChildCustomizations() const { return ChildCustomizations; }
/** Set the user customized reset to default for the children of this builder */
FCustomChildrenBuilder& OverrideResetChildrenToDefault(const FResetToDefaultOverride& ResetToDefault);
private:
TArray< FDetailLayoutCustomization > ChildCustomizations;
TWeakPtr<FDetailCategoryImpl> ParentCategory;
TWeakPtr<IDetailGroup> ParentGroup;
/** User customized reset to default on children */
TOptional<FResetToDefaultOverride> CustomResetChildToDefault;
};