void SAnywhereGenerateAuthTokenMenu::Construct()

in GameLiftPlugin/Source/GameLiftPlugin/Private/SMenu/Anywhere/SAnywhereGenerateAuthTokenMenu.cpp [22:129]


void SAnywhereGenerateAuthTokenMenu::Construct(const FArguments& InArgs)
{
	TSharedRef<SVerticalBox> VerticalBox = SNew(SVerticalBox)
		+ SVerticalBox::Slot()
		.AutoHeight()
		.HAlign(HAlign_Fill)
		[
			SNew(SNamedRow)
			.NameText(Menu::DeployAnywhere::kAuthTokenTitle)
			.SecondaryColumnLeftPadding(true)
			.RowWidget(
				SNew(SVerticalBox)
				+ SVerticalBox::Slot()
				.AutoHeight()
				.HAlign(HAlign_Fill)
				[
					SAssignNew(AuthTokenTextView, SEditableText)
					.Text(Menu::DeployAnywhere::kAuthTokenNotGeneratedText)
					.Style(FGameLiftPluginStyle::Get(), Style::EditableText::kFieldMedium)
					.IsReadOnly(true)
				]
				+ SVerticalBox::Slot()
				.AutoHeight()
				.HAlign(HAlign_Fill)
				.Padding(SPadding::Top)
				[
					SAssignNew(AuthTokenNoteView, STextBlock)
					.Text(Menu::DeployAnywhere::kAuthTokenGenerateNoteText)
					.AutoWrapText(true)
					.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kNote)
				]
			)
		]
		+ SVerticalBox::Slot()
		.AutoHeight()
		.HAlign(HAlign_Left)
		.Padding(SPadding::Top_Bottom)
		[
			SNew(SHorizontalBox)
			+ SHorizontalBox::Slot()
			.AutoWidth()
			[
				SNew(SNamedRow)
				.RowWidget(
					SNew(SHorizontalBox)
					+ SHorizontalBox::Slot()
					.AutoWidth()
					.HAlign(HAlign_Left)
					.Padding(SPadding::Right2x)
					[
						SNew(SButton)
						.Text(Menu::DeployAnywhere::kAuthTokenGenerateButtonText)
						.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kButtonNormal)
						.IsEnabled_Raw(this, &SAnywhereGenerateAuthTokenMenu::CanGenerateAuthToken)
						.OnClicked_Raw(this, &SAnywhereGenerateAuthTokenMenu::OnGenerateAuthTokenButtonClicked)
					]
					// Loading indicator
					+ SHorizontalBox::Slot()
					.AutoWidth()
					.HAlign(HAlign_Left)
					.VAlign(VAlign_Center)
					[
						SNew(STextStatus)
						.IconState(STextStatus::EIconState::Loading)
						.Visibility_Lambda([&]
						{
							return IsLoading ? EVisibility::Visible : EVisibility::Hidden;
						})
					]
				)
			]
		]
		+ SVerticalBox::Slot()
		.AutoHeight()
		.VAlign(VAlign_Center)
		.Padding(SPadding::Top_Bottom)
		[
			SAssignNew(GenerateAuthTokenErrorRow, SNamedRow)
			.SecondaryColumnLeftPadding(true)
			.RowWidget(
				SAssignNew(GenerateAuthTokenErrorTextBlock, STextBlock)
				.TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kNote)
				.AutoWrapText(true)
			)
			.Visibility(EVisibility::Collapsed)
		];

	SSectionStep::Construct(
		SSectionStep::FArguments()
		.HeaderTitle(Menu::DeployAnywhere::kGenerateAuthTokenHeader)
		.HeaderDescription(FText::FromString("DESCRIPTION TODO"))
		.BodyContent()
		[
			VerticalBox
		]);

	GenerateAuthTokenErrorTextBlock->SetColorAndOpacity(FGameLiftPluginStyle::Get().GetColor(Style::Color::kError));

	// Listen to profile changes
	SGameLiftSettingsAwsAccountMenu::OnProfileSelectionChangedMultiDelegate.AddSP(this, &SAnywhereGenerateAuthTokenMenu::OnBootstrapStatusChanged);

	// Initialize section UI based on state
	UGameLiftAnywhereStatus* AnywhereStatus = GetMutableDefault<UGameLiftAnywhereStatus>();
	if (AnywhereStatus->AuthToken.IsEmpty())
	{
		ResetAndCollapseSection();
	}
}