in Editor/Window/Containers/ContainersPage.cs [98:213]
public ContainersPage(VisualElement container, StateManager stateManager)
{
_container = container;
_stateManager = stateManager;
var mVisualTreeAsset = UnityEngine.Resources.Load<VisualTreeAsset>("EditorWindow/Pages/ContainersPage");
var uxml = mVisualTreeAsset.Instantiate();
_deploymentSettings = DeploymentSettingsFactory.CreateContainerDeploymentSettings(_stateManager);
container.Add(uxml);
LocalizeText();
SetupStatusBoxes();
_stateManager.OnUserProfileUpdated += UpdateStatusBoxes;
_stateManager.OnUserProfileUpdated += DisableUIIfNotSetup;
_deployContainerFleetButton = container.Q<Button>("DeployContainerFleetButton");
_resetDeploymentButton = container.Q<Button>("ResetDeploymentButton");
_viewFleetOnConsoleButton = container.Q<Button>("AWSConsoleButton");
// Profile table
profileTableContainer = container.Q<VisualElement>("ProfileTableContainer");
//Profile table foldout
profileTableFoldoutTitle = container.Q<Label>("ProfileTableFoldoutTitle");
profileTableFoldoutContainer = container.Q<VisualElement>("ProfileTableFoldoutContainer");
profileTableFoldout = container.Q<Foldout>("ProfileTableFoldout");
InitializeInputFoldout(profileTableFoldout, profileTableFoldoutTitle);
//Questionnaire
questionaireContainer = container.Q<VisualElement>("ContainerQuestionnaireContainer");
_containersQuestionnaire = new ContainersQuestionnaire(questionaireContainer, stateManager, true);
// Questionnaire foldout
questionnaireFoldoutTitle = container.Q<Label>("QuestionnaireFoldoutTitle");
questionaireFoldoutContainer = container.Q<VisualElement>("ContainerQuestionnaireFoldoutContainer");
questionnaireFoldout = container.Q<Foldout>("ContainerQuestionnaireFoldout");
_containersQuestionnaireFoldout = new ContainersQuestionnaire(questionnaireFoldout, stateManager, false);
_containersQuestionnaireFoldout.PopulateContent();
InitializeInputFoldout(questionnaireFoldout, questionnaireFoldoutTitle);
// User input
userInputContainer = container.Q<VisualElement>("ConfigureImageDeploymentContainer");
_containersUserInput = new ContainersUserInput(userInputContainer, stateManager, true);
_containersUserInput.OnValidationEvent += ShowHideDeployButton;
// User input foldout
userInputFoldoutTitle = container.Q<Label>("UserInputFoldoutTitle");
userInputFoldoutContainer = container.Q<VisualElement>("ContainerUserInputFoldoutContainer");
userInputFoldout = container.Q<Foldout>("ContainerUserInputFoldout");
_containersUserInputFoldout = new ContainersUserInput(userInputFoldout, stateManager, false);
_containersUserInputFoldout.PopulateContent();
InitializeInputFoldout(userInputFoldout, userInputFoldoutTitle);
// Control bar
controlBarContainer = container.Q<VisualElement>("ContainerControlBar");
// Launch bar
_launchBarContainer = container.Q<VisualElement>("ContainersLaunchBar");
// Containers Unsupported Warning
_containersUnsupportedStatusBox = container.Q<StatusBox>("RegionUnsupportedStatusBox");
var unsupportedRegionWarning =
string.Format(new TextProvider().Get(Strings.ContainersPageRegionUnsupportedStatusBoxTemplate),
_stateManager.Region);
_containersUnsupportedStatusBox.Show(StatusBox.StatusBoxType.Warning, unsupportedRegionWarning,
externalButtonLink: Urls.SupportedContainersRegions, externalButtonText: "View supported regions");
_isDockerInstalled = IsDockerInstalled();
_missingWslDockerStatusBox = container.Q<StatusBox>("MissingWslDockerStatusBox");
_missingWslDockerStatusBox.Show(StatusBox.StatusBoxType.Warning, Strings.ContainersPageMissingWslDockerStatusBoxText,
externalButtonLink: Urls.InstallDockerEngine, externalButtonText: "Install Docker Engine");
_missingWslDockerStatusBox.HideCloseButton();
_deploymentNoticeStatusBox = container.Q<StatusBox>("DeploymentNoticeStatusBox");
_deploymentNoticeStatusBox.Show(StatusBox.StatusBoxType.Info, Strings.ContainersPageDeploymentNoticeStatusBoxText);
ShowHideNotices();
// Initialize all the steps
foreach (ContainerSteps step in getAllSteps())
{
InitializeStep(step);
}
container.Q<Button>("ManageCredentialsButton")
.RegisterCallback<ClickEvent>(_ => EditorMenu.OpenAccountProfilesTab());
container.Q<Button>("UpdateDeploymentButton")
.RegisterCallback<ClickEvent>(_ => OpenUpdateContainersFleetPopup());
stateManager.OnContainerQuestionnaireScenarioChanged += UpdateGUI;
stateManager.OnContainersDeploymentStatusChanged += ShowHideLaunchBar;
_gameLiftClientSettingsLoader = new GameLiftClientSettingsLoader();
LoadGameLiftClientSettings();
_launchClientButton = container.Q<Button>("StartClientButton");
_launchClientButton.RegisterCallback<ClickEvent>(_ =>
{
_gameLiftClientSettings.ConfigureContainersClientSettings(_stateManager.Region, _deploymentSettings.CurrentStackInfo.ApiGatewayEndpoint, _deploymentSettings.CurrentStackInfo.UserPoolClientId);
_stateManager.OnClientSettingsChanged?.Invoke();
EditorUserBuildSettings.SwitchActiveBuildTarget(NamedBuildTarget.Standalone,
EditorUserBuildSettings.selectedStandaloneTarget);
EditorApplication.EnterPlaymode();
});
DisableUIIfNotSetup();
UpdateGUI();
UpdateStatusBoxes();
}