Editor/Window/LandingPage.cs (122 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; namespace AmazonGameLift.Editor { public class LandingPage { private readonly VisualElement _container; private readonly HelpfulResources _helpfulResources; private StatusBox _statusBox; private StateManager _stateManager; public LandingPage(VisualElement container, StateManager stateManager) { _container = container; var mVisualTreeAsset = Resources.Load<VisualTreeAsset>("EditorWindow/Pages/LandingPage"); var uxml = mVisualTreeAsset.Instantiate(); container.Add(uxml); SetupStatusBoxes(); LocalizeText(); _stateManager = stateManager; var helpfulResourcesContainer = _container.Q<Foldout>("HelpfulResourcesFoldout"); _helpfulResources = new HelpfulResources(helpfulResourcesContainer); helpfulResourcesContainer.value = false; UpdateGui(); _stateManager.OnUserProfileUpdated += UpdateGui; _container.Q<Button>("CreateAccount").RegisterCallback<ClickEvent>(_ => Application.OpenURL(Urls.CreateAwsAccountLearnMore)); _container.Q<Button>("LandingPageAccountCardButton").RegisterCallback<ClickEvent>(_ => OnAddProfileClicked()); _container.Q<Button>("LandingPageAnywhereButton").RegisterCallback<ClickEvent>(_ => OnAnywhereButtonClicked()); _container.Q<Button>("LandingPageManagedButton").RegisterCallback<ClickEvent>(_ => OnManagedButtonClicked()); _container.Q<Button>("LandingPageContainerButton").RegisterCallback<ClickEvent>(_ => OnContainerButtonClicked()); _container.Q<Button>("ManageCredentialsButton").RegisterCallback<ClickEvent>(_ => OnCredentialsButtonClicked()); } private static void OnAddProfileClicked() { EditorMenu.OpenAccountProfilesTab(); } private static void OnAnywhereButtonClicked() { EditorMenu.OpenAnywhereTab(); } private static void OnManagedButtonClicked() { EditorMenu.OpenEC2Tab(); } private static void OnContainerButtonClicked() { EditorMenu.OpenContainersTab(); } private static void OnCredentialsButtonClicked() { EditorMenu.OpenAccountProfilesTab(); } private static void OnImportSampleClicked() { EditorMenu.ImportSampleGame(); } private void UpdateGui() { VisualElement _accountLandingPage = _container.Q<VisualElement>("LandingPageAccount"); ProfileTable _profileTable = _container.Q<ProfileTable>("ProfileTable"); VisualElement _profileTableDivider = _container.Q<VisualElement>("ProfileTableDivider"); Button _manageCredentialsButton = _container.Q<Button>("ManageCredentialsButton"); VisualElement _containersSection = _container.Q<VisualElement>("LandingPageContainer"); VisualElement _noAccountLandingPage = _container.Q<VisualElement>("LandingPageNoAccount"); if (_stateManager.SelectedProfile == null) { _statusBox.Show(StatusBox.StatusBoxType.Info, Strings.LandingPageInfoStatusBoxText); } else if (!_stateManager.IsBootstrapped()) { _statusBox.Show(StatusBox.StatusBoxType.Warning, Strings.LandingPageWarningStatusBoxText); _noAccountLandingPage.RemoveFromClassList("hidden"); _accountLandingPage.AddToClassList("hidden"); _profileTable.AddToClassList("hidden"); _profileTableDivider.AddToClassList("hidden"); _manageCredentialsButton.AddToClassList("hidden"); } else { _statusBox.Close(); _noAccountLandingPage.AddToClassList("hidden"); _accountLandingPage.RemoveFromClassList("hidden"); _profileTable.RemoveFromClassList("hidden"); _profileTableDivider.RemoveFromClassList("hidden"); _manageCredentialsButton.RemoveFromClassList("hidden"); } } private void LocalizeText() { var l = new ElementLocalizer(_container); var strings = new[] { Strings.LandingPageHeader, Strings.LandingPageDescription, Strings.LandingPageAnywhereTitle, Strings.LandingPageAnywhereDescription, Strings.LandingPageAnywhereButton, Strings.LandingPageManagedTitle, Strings.LandingPageManagedDescription, Strings.LandingPageManagedButton, Strings.LandingPageContainerTitle, Strings.LandingPageContainerDescription, Strings.LandingPageContainerButton, Strings.LandingPageNoAccountCardText, Strings.LandingPageNoAccountCardButton, Strings.LandingPageAccountCardText, Strings.LandingPageAccountCardButton, Strings.LandingPageSampleHeader, Strings.LandingPageSampleDescription, Strings.LandingPageSampleButton }; foreach (var s in strings) { l.SetElementText(s, s); } } private void SetupStatusBoxes() { _statusBox = _container.Q<StatusBox>("LandingPageStatusBox"); } } }