TSharedRef SUserInputSection::CreateDefaultSettings()

in GameLiftPlugin/Source/GameLiftPlugin/Private/SMenu/Containers/SUserInputSection.cpp [332:491]


TSharedRef<SWidget> SUserInputSection::CreateDefaultSettings()
{
    UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();

    SAssignNew(GameNameInput, SEditableTextBox)
        .HintText(Menu::DeployContainers::kGameNameTextHint)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnGameNameInputCommitted);
    GameNameInput->SetText(ContainersStatus->GameName);

    SAssignNew(ConnectionPortRangeInput, SEditableTextBox)
        .HintText(Menu::DeployContainers::kConnectionPortRangeTextHint)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnConnectionPortRangeInputCommitted);
    ConnectionPortRangeInput->SetText(ContainersStatus->ConnectionPortRange);

    SAssignNew(TotalMemoryLimitInput, SEditableTextBox)
        .HintText(Menu::DeployContainers::kTotalMemoryLimitTextHint)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnTotalMemoryLimitInputCommitted);
    TotalMemoryLimitInput->SetText(ContainersStatus->TotalMemoryLimit);

    SAssignNew(TotalVCPULimitInput, SEditableTextBox)
        .HintText(Menu::DeployContainers::kTotalVCPULimitTextHint)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnTotalVCPULimitInputCommitted);
    TotalVCPULimitInput->SetText(ContainersStatus->TotalVCPULimit);

    SAssignNew(ImageTagInput, SEditableTextBox)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnImageTagInputCommitted);
    ImageTagInput->SetText(ContainersStatus->ImageTag);

    SAssignNew(ECRRepoInput, SEditableTextBox)
        .OnTextCommitted_Raw(this, &SUserInputSection::OnECRRepoInputCommitted);
    ECRRepoInput->SetText(FText::FromString(ContainersStatus->ECRRepoName));

    return SNew(SVerticalBox)
        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(STextBlock)
                .Text(Menu::DeployContainers::kDefaultSettingsDescription)
                .AutoWrapText(true)
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SNamedRow)
                .NameText(Menu::DeployContainers::kGameNameText)
                .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                .RowWidget(
                    GameNameInput.ToSharedRef()
                )
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SNamedRow)
                .NameText(Menu::DeployContainers::kConnectionPortRangeText)
                .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                .RowWidget(
                    ConnectionPortRangeInput.ToSharedRef()
                )
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SHorizontalBox)
                + SHorizontalBox::Slot()
                .AutoWidth()
                .Padding(SPadding::Right2x)
                [
                    SNew(SNamedRow)
                        .NameText(Menu::DeployContainers::kTotalMemoryLimitText)
                        .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                        .SecondaryColumnWidthOverride(OverrideSecondaryColumnWidth)
                        .RowWidget(
                            TotalMemoryLimitInput.ToSharedRef()
                        )
                ]
                + SHorizontalBox::Slot()
                .AutoWidth()
                .VAlign(VAlign_Center)
                .Padding(SPadding::Right2x)
                [
                    SNew(STextBlock).Text(Menu::DeployContainers::kTotalMemoryLimitUnit)
                ]
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SHorizontalBox)
                + SHorizontalBox::Slot()
                .AutoWidth()
                .Padding(SPadding::Right2x)
                [
                    SNew(SNamedRow)
                        .NameText(Menu::DeployContainers::kTotalVCPULimitText)
                        .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                        .SecondaryColumnWidthOverride(OverrideSecondaryColumnWidth)
                        .RowWidget(
                            TotalVCPULimitInput.ToSharedRef()
                        )
                ]
                + SHorizontalBox::Slot()
                .AutoWidth()
                .VAlign(VAlign_Center)
                .Padding(SPadding::Right2x)
                [
                    SNew(STextBlock).Text(Menu::DeployContainers::kTotalVCPULimitUnit)
                ]
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SBox)
                .Visibility_Lambda([&]()
                    {
                        UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();
                        return ContainersStatus->DeploymentScenario == (int)EContainersDeploymentScenario::HaveContainerImageInEcr ? EVisibility::Collapsed : EVisibility::Visible;
                    })
                [
                    SNew(SNamedRow)
                        .NameText(Menu::DeployContainers::kImageTagText)
                        .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                        .RowWidget(
                            ImageTagInput.ToSharedRef()
                        )
                ]
        ]

        + SVerticalBox::Slot()
        .Padding(SPadding::Top_Bottom)
        .AutoHeight()
        [
            SNew(SBox)
                .Visibility_Lambda([&]()
                    {
                        UGameLiftContainersStatus* ContainersStatus = GetMutableDefault<UGameLiftContainersStatus>();
                        bool IsCollapsed = (ContainersStatus->DeploymentScenario == (int)EContainersDeploymentScenario::NoContainerImageUseExistingEcrRepo ||
                            ContainersStatus->DeploymentScenario == (int)EContainersDeploymentScenario::HaveContainerImageInEcr);
                        return IsCollapsed ? EVisibility::Collapsed : EVisibility::Visible;
                    })
                [
                    SNew(SNamedRow)
                        .NameText(Menu::DeployContainers::kECRRepoNameText)
                        .PrimaryColumnWidthOverride(OverridePrimaryColumnWidth)
                        .RowWidget(
                            ECRRepoInput.ToSharedRef()
                        )
                ]
        ];
}