void SBuildAndPushToECRSection::Construct()

in GameLiftPlugin/Source/GameLiftPlugin/Private/SMenu/Containers/SBuildAndPushToECRSection.cpp [57:201]


void SBuildAndPushToECRSection::Construct(const FArguments& InArgs)
{
	isDockerSetup = FPlatformMisc::OsExecute(TEXT("open"), TEXT("docker"), TEXT("-v"));
	OnBuildAndPushFinishedDelegate = InArgs._OnBuildAndPushFinishedDelegate;

    ChildSlot
    [
		SNew(SHorizontalBox)
			+ SHorizontalBox::Slot()
			.Padding(SPadding::Right2x)
			.AutoWidth()
			[
				SAssignNew(ProgressBar, SProgressBar)
			]

			+ SHorizontalBox::Slot()
			.Padding(SPadding::Bottom5x + SPadding::Right2x)
			.FillWidth(1.0f)
			[
				SNew(SVerticalBox)
					+ SVerticalBox::Slot()
					.AutoHeight()
					.Padding(SPadding::SectionTitleTopPadding)
					[
						SNew(STextBlock)
							.Text(Menu::DeployContainers::kBuildAndPushToECRHeader)
							.AutoWrapText(true)
							.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kTitleStyleName)
					]
					+ SVerticalBox::Slot()
					.AutoHeight()
					.Padding(SPadding::Top3x)
					[
						SNew(STextBlock)
							.Text(Menu::DeployContainers::kBuildAndPushToECRDescription)
							.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)
							]
					]
					// Show commands 
					+ SVerticalBox::Slot()
					.AutoHeight()
					.Padding(SPadding::Top2x)
					[
						SNew(SBox)
							.Visibility_Lambda([&]()
								{
									return isDockerSetup ? EVisibility::Collapsed : EVisibility::Visible;
								})
							[
								CreateShowCommandsUI()
							]
					]
					// Error text box
					+ SVerticalBox::Slot()
					.AutoHeight()
					.Padding(SPadding::Top2x)
					[
						CreateShowErrorUI()
					]
					// Image tag row
					+ SVerticalBox::Slot()
					.AutoHeight()
					.HAlign(HAlign_Fill)
					.Padding(SPadding::Top2x)
					[
						SAssignNew(ImageTagRow, SNamedRow)
							.NameText(Menu::DeployContainers::kImageTagText)
							.RowWidget(
								SAssignNew(ImageTagTextBlock, STextBlock)
								.Text(Menu::DeployContainers::kSetupECRRepositoryDescription)
								.AutoWrapText(true)
								.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
							)
							.SecondaryColumnLeftPadding(true)
							.Visibility(EVisibility::Collapsed)
					]
					// Retry button
					+ SVerticalBox::Slot()
					.AutoHeight()
					.HAlign(HAlign_Left)
					.Padding(SPadding::Top3x)
					[
						SNew(SButton)
							.OnClicked_Lambda([&]()
								{
									ResetUIToNotStarted();
									StartSectionWorkflow();
									return FReply::Handled();
								})
							.Visibility_Lambda([&]() -> EVisibility
								{
									UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();
									return ContainersStatus->ErrorRunningBuildAndPushScript ? EVisibility::Visible : EVisibility::Collapsed;
								})
							.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)
											]
									]
							]
					]
			]
    ];
	UpdateUIBasedOnCurrentState();
}