using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEditor.UIElements; using UnityEngine.UIElements; using PlasticGui; using PlasticGui.WebApi.Responses; 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, OrganizationsResponse organizationResponse, Action organizationJoinedAction, string title) { mParentWindow = parentWindow; mOrganizationResponse = organizationResponse; mOnOrganizationJoined = organizationJoinedAction; InitializeLayoutAndStyles(); BuildComponents(title); OnEditorActivated(); } internal void Dispose() { 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 (mOrganizationResponse == null || mOrganizationResponse.CloudServers == null) { mProgressControls.ShowError("Could not find cloud organizations"); return; } if (mOrganizationResponse.Error != null) { mProgressControls.ShowError(mOrganizationResponse.Error.Message); return; } // This is crucial to initialize the internal cache of slugs in the plastic library OrganizationsInformation.UpdateOrganizationSlugs(mOrganizationResponse); List organizationsInfo = OrganizationsInformation.FromServersOrdered(mOrganizationResponse.CloudServers); 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