using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEditor.UIElements; using UnityEngine.UIElements; using PlasticGui; using PlasticGui.WorkspaceWindow.Home; using Unity.PlasticSCM.Editor.UI; using Unity.PlasticSCM.Editor.UI.UIElements; namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome { internal class OrganizationPanel : VisualElement { internal OrganizationPanel( CloudEditionWelcomeWindow parentWindow, List cloudServers, string errorMessage, string title, Action organizationJoinedAction) { mParentWindow = parentWindow; mPrefetchedCloudServers = cloudServers; mPrefetchedErrorMessage = errorMessage; mOnOrganizationJoined = organizationJoinedAction; InitializeLayoutAndStyles(); BuildComponents(title); OnEditorActivated(); } internal void Dispose() { if (!mOrganizationJoined) mParentWindow.CancelJoinOrganization(); if (mJoinSingleOrganizationButton != null) mJoinSingleOrganizationButton.clicked -= JoinOrganizationButton_clicked; if (mJoinMultipleOrganizationsButton != null) mJoinMultipleOrganizationsButton.clicked -= JoinOrganizationButton_clicked; if (mOpenUnityDashboardButton != null) mOpenUnityDashboardButton.clicked -= OpenUnityDashboardButton_clicked; } void OnEditorActivated() { if (!string.IsNullOrEmpty(mPrefetchedErrorMessage)) { mProgressControls.ShowError(mPrefetchedErrorMessage); return; } if (mPrefetchedCloudServers == null || mPrefetchedCloudServers.Count == 0) { mProgressControls.ShowError("Could not find cloud organizations"); return; } List organizationsInfo = OrganizationsInformation.FromServersOrdered(mPrefetchedCloudServers); ProcessOrganizations(organizationsInfo); } void ProcessOrganizations(List organizations) { this.Query("noOrganization").Collapse(); this.Query("joinSingleOrganization").Collapse(); this.Query("joinMultipleOrganizations").Collapse(); if (organizations.Count == 0) { BuildNoOrganizationSection(); mOpenUnityDashboardButton = this.Q