in GameLiftPlugin/Source/GameLiftPlugin/Private/SMenu/Containers/SSetupECRRepositorySection.cpp [29:198]
void SSetupECRRepositorySection::Construct(const FArguments& InArgs)
{
OnECRUpdateDelegate = InArgs._OnECRUpdateDelegate;
ChildSlot
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(SPadding::Right2x)
.AutoWidth()
[
SAssignNew(ProgressBar, SProgressBar)
]
+ SHorizontalBox::Slot()
.FillWidth(1.0f)
.Padding(SPadding::Bottom5x + SPadding::Right2x)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SWidgetSwitcher)
.WidgetIndex_Lambda([&]()
{
UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();
return ContainersStatus->DeploymentScenario == (int)EContainersDeploymentScenario::NoContainerImageNoExistingEcrRepo || ContainersStatus->DeploymentScenario == (int)EContainersDeploymentScenario::HaveContainerImageInDocker ? 0 : 1;
})
+ SWidgetSwitcher::Slot()
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::SectionTitleTopPadding)
[
SNew(STextBlock)
.Text(Menu::DeployContainers::kCreateECRRepositoryHeader)
.AutoWrapText(true)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kTitleStyleName)
]
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::Top3x)
[
SNew(STextBlock)
.Text(Menu::DeployContainers::kCreateECRRepositoryDescription)
.AutoWrapText(true)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
]
]
+ SWidgetSwitcher::Slot()
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::SectionTitleTopPadding)
[
SNew(STextBlock)
.Text(Menu::DeployContainers::kSetupECRRepositoryHeader)
.AutoWrapText(true)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kTitleStyleName)
]
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::Top3x)
[
SNew(STextBlock)
.Text(Menu::DeployContainers::kSetupECRRepositoryDescription)
.AutoWrapText(true)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
]
]
]
// External links
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::Top2x)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
.HAlign(HAlign_Left)
[
SNew(SOnlineHyperlink)
.Text(Menu::DeployContainers::kLearnMoreAboutPrivateRepositoryLabel)
.Link(Url::kAmazonECRUserGuideLinkUrl)
]
]
// Error text box
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(SPadding::Top2x)
[
CreateShowErrorUI()
]
// Repository name row
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Fill)
.Padding(SPadding::Top2x)
[
SAssignNew(RepoNameRow, SNamedRow)
.NameText(Menu::DeployContainers::kRepositoryNameTitle)
.RowWidget(
SAssignNew(RepoNameTextBlock, STextBlock)
.AutoWrapText(true)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
)
.SecondaryColumnLeftPadding(true)
.Visibility(EVisibility::Collapsed)
]
// Retry button
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Left)
[
SNew(SBox)
.Padding(SPadding::Top3x)
.Visibility_Lambda([&]() -> EVisibility
{
UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();
return ContainersStatus->ErrorCreatingECRRepo ? EVisibility::Visible : EVisibility::Collapsed;
})
[
SNew(SButton)
.OnClicked_Lambda([&]()
{
ResetUIToNotStarted();
StartSectionWorkflow();
return FReply::Handled();
})
.Content()
[
SNew(SBox)
.HAlign(HAlign_Center)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
.HAlign(HAlign_Left)
.VAlign(VAlign_Center)
.Padding(SPadding::Right)
[
SNew(SBox)
.WidthOverride(Style::kResetIconSize)
.HeightOverride(Style::kResetIconSize)
[
SNew(SImage)
.Image(FGameLiftPluginStyle::Get().GetBrush(Style::Brush::kResetIconName))
]
]
+ SHorizontalBox::Slot()
.AutoWidth()
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(STextBlock)
.Text(Menu::DeployContainers::kRetryButtonLabel)
.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kButtonNormal)
]
]
]
]
]
]
];
SGameLiftSettingsAwsAccountMenu::OnProfileSelectionChangedMultiDelegate.AddSP(this, &SSetupECRRepositorySection::OnBootstrapStatusChanged);
UpdateUIBasedOnCurrentState();
}