void SBootstrapModal::Construct()

in GameLiftPlugin/Source/GameLiftPlugin/Private/SMenu/SBootstrapModal.cpp [21:169]


void SBootstrapModal::Construct(const FArguments& InArgs)
{
    S3BucketName = InArgs._DefaultS3BucketName;
    OnBootstrapProfileClickedDelegate = InArgs._OnBootstrapProfileClickedDelegate;
    ParentWidget = InArgs._ParentWidget;

    UGameLiftSettings* Settings = GetMutableDefault<UGameLiftSettings>();
    ChildSlot
        [
            SAssignNew(OwnerWindow, SWindow)
                .IsPopupWindow(true)
                .SupportsMinimize(false)
                .SupportsMaximize(false)
                .bDragAnywhere(true)
                .SizingRule(ESizingRule::Autosized)
                .HasCloseButton(true)
                .Content()
                [
                    SNew(SBox)
                        .MinDesiredWidth(MinModalWindowWidth)
                        .MaxDesiredWidth(MaxModalWindowWidth)
                        [
                            SNew(SVerticalBox)
                                // Bootstrap modal title and close button
                                + SVerticalBox::Slot()
                                .AutoHeight()
                                .Padding(SPadding::Left4x + SPadding::Right4x + SPadding::Top2x_Bottom2x)
                                [
                                    SNew(SHorizontalBox)
                                        + SHorizontalBox::Slot()
                                        .FillWidth(1.0f)
                                        .HAlign(HAlign_Left)
                                        [
                                            SNew(STextBlock)
                                                .Text(FText::FromString(FString::Format(TEXT("Bootstrap {0}"), { Settings->CurrentProfileName })))
                                                .TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kTitleStyleName)
                                        ]
                                        + SHorizontalBox::Slot()
                                        .AutoWidth()
                                        .HAlign(HAlign_Right)
                                        .VAlign(VAlign_Center)
                                        [
                                            SNew(SButton)
                                                .OnClicked(this, &SBootstrapModal::OnCloseButtonClicked)
                                                .ButtonStyle(FGameLiftPluginStyle::Get(), Style::Button::kCloseButtonStyleName)
                                        ]
                                ]
                                + SVerticalBox::Slot()
                                .AutoHeight()
                                [
                                    SNew(SBorder)
                                        .BorderBackgroundColor(FColor::Black)
                                        .BorderImage(FGameLiftPluginStyle::Get().GetBrush(Style::Brush::kBorderImageName))
                                        .Padding(SPadding::Left4x + SPadding::Right4x + SPadding::Top2x_Bottom2x)
                                        [
                                            SNew(SVerticalBox)
                                                // AWS Tier warning message
                                                + SVerticalBox::Slot()
                                                .AutoHeight()
                                                .Padding(SPadding::Top_Bottom2x)
                                                [
                                                    SNew(SSetupMessage)
                                                        .WarningRowWidget(
                                                            SNew(SVerticalBox)
                                                            + SVerticalBox::Slot()
                                                            .AutoHeight()
                                                            [
                                                                SNew(SHorizontalBox)
                                                                    + SHorizontalBox::Slot()
                                                                    .FillWidth(1.0f)
                                                                    .HAlign(HAlign_Left)
                                                                    .VAlign(VAlign_Center)
                                                                    [
                                                                        SNew(SRichTextBlock)
                                                                            .Text(Settings::AwsAccount::kBootstrapProfileModalWarningMessage)
                                                                            .TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
                                                                            .AutoWrapText(true)
                                                                    ]
                                                            ]
                                                            + SVerticalBox::Slot()
                                                            .AutoHeight()
                                                            .Padding(SPadding::Top2x)
                                                            [
                                                                SNew(SOnlineHyperlink)
                                                                    .Text(Settings::AwsAccount::kAWSFreeTierLinkText)
                                                                    .Link(Settings::AwsAccount::kAWSFreeTierLinkUrl)
                                                            ]
                                                        )
                                                ]
                                                // Bootstrap modal description
                                                + SVerticalBox::Slot()
                                                .AutoHeight()
                                                .Padding(SPadding::Top_Bottom2x)
                                                [
                                                    SNew(STextBlock)
                                                        .Text(Settings::AwsAccount::kBootstrapProfileModalDescription)
                                                        .TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kParagraph)
                                                        .AutoWrapText(true)

                                                ]
                                                // S3 bucket name input
                                                + SVerticalBox::Slot()
                                                .AutoHeight()
                                                .Padding(SPadding::Top_Bottom2x)
                                                [
                                                    CreateS3BucketNameInput()
                                                ]
                                                // Buttons
                                                + SVerticalBox::Slot()
                                                .AutoHeight()
                                                .Padding(SPadding::Top2x_Bottom2x)
                                                [
                                                    SNew(SHorizontalBox)
                                                        + SHorizontalBox::Slot()
                                                        .FillWidth(1)
                                                        .HAlign(HAlign_Right)
                                                        .VAlign(VAlign_Center)
                                                        .Padding(SPadding::Right2x)
                                                        [
                                                            SNew(SButton)
                                                                .Text(Settings::AwsAccount::kCancelButtonText)
                                                                .TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kButtonLight)
                                                                .ButtonStyle(FGameLiftPluginStyle::Get(), Style::Button::kNormalButtonStyleName)
                                                                .ContentPadding(SPadding::LaunchBarButtonPadding)
                                                                .OnClicked(this, &SBootstrapModal::OnCloseButtonClicked)
                                                        ]
                                                        + SHorizontalBox::Slot()
                                                        .AutoWidth()
                                                        .HAlign(HAlign_Right)
                                                        .VAlign(VAlign_Center)
                                                        [
                                                            SAssignNew(BootstrapProfile, SButton)
                                                                .Text(Settings::AwsAccount::kBootstrapProfileButtonText)
                                                                .TextStyle(FGameLiftPluginStyle::Get(), Style::Text::kButtonNormal)
                                                                .ButtonStyle(FGameLiftPluginStyle::Get(), Style::Button::kSuccessButtonStyleName)
                                                                .ContentPadding(SPadding::LaunchBarButtonPadding)
                                                                .OnClicked_Raw(this, &SBootstrapModal::OnBootstrapProfileClicked)
                                                        ]
                                                ]
                                        ]
                                ]
                        ]
                ]
        ];

    SetParentWindow();
    S3BucketNameToUpdate = S3BucketName;
    BootstrapProfile->SetEnabled(!S3BucketNameToUpdate.IsEmpty());
}