void SSetupECRRepositorySection::Construct()

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();
}