// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #pragma once // GameKit #include #include "AwsGameKitDocumentationManager.h" #include "AwsGameKitEditor.h" // Unreal #include "DetailCategoryBuilder.h" #include "IDetailCustomization.h" #include "Templates/SharedPointer.h" #include "Widgets/SBoxPanel.h" // Unreal forward declarations class FMessageEndpoint; class AWSGAMEKITEDITOR_API AwsGameKitFeatureLayoutDetails : public IDetailCustomization { protected: // URL for first deployment warning const FString INTRO_COST_URL = AwsGameKitDocumentationManager::GetDocumentString("dev_guide_url", "intro_cost"); // Handles const FAwsGameKitEditorModule* editorModule; // Feature management const FeatureType featureType; TSharedRef GetDeployControls(const bool addSeparator = true); TSharedRef GetFeatureFooter(const FText& featureDescription); bool CanEditConfiguration() const; virtual FReply DeployFeature(); virtual FReply DeleteFeature(); bool ShowDashboardLink(const TSharedPtr featureControlCenter, const TSharedPtr featureResourceManager); // Credential management TSharedPtr messageEndpoint; virtual void CredentialsStateMessageHandler(const struct FMsgCredentialsState& message, const TSharedRef& context); IDetailCategoryBuilder* featureCategoryBuilder = nullptr; public: static const FString GAMEKIT_CLOUDWATCH_DASHBOARD_ENABLED; AwsGameKitFeatureLayoutDetails(const FeatureType featureType, const FAwsGameKitEditorModule* editorModule); };