| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- using UnityEditor;
- using UnityEngine;
- using UnityEngine.UIElements;
- using PlasticGui;
- using PlasticGui.WebApi;
- using Unity.PlasticSCM.Editor.UI.UIElements;
- using PlasticGui.Configuration.CloudEdition.Welcome;
- using System.Collections.Generic;
- using Codice.Client.Common.Servers;
- using Codice.Client.Common;
- using Codice.Utils;
- using Unity.PlasticSCM.Editor.Views.Welcome;
- using Codice.CM.Common;
- namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome
- {
- internal interface IWelcomeWindowNotify
- {
- void SuccessForConfigure(List<string> organizations, bool canCreateAnOrganization);
- void SuccessForSSO(string organization);
- void SuccessForCredentials(string userName, string password);
- void SuccessForProfile(string userName);
- void SignUpNeeded(string user, string password);
- void Back();
- }
- internal class CloudEditionWelcomeWindow :
- EditorWindow,
- OAuthSignIn.INotify,
- IWelcomeWindowNotify
- {
- internal static void ShowWindow(
- IPlasticWebRestApi restApi,
- CmConnection cmConnection,
- WelcomeView welcomeView,
- bool autoLogin = false)
- {
- sRestApi = restApi;
- sCmConnection = cmConnection;
- sAutoLogin = autoLogin;
- CloudEditionWelcomeWindow window = GetWindow<CloudEditionWelcomeWindow>();
- window.titleContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.Name.SignInToPlasticSCM));
- window.minSize = window.maxSize = new Vector2(500, 460);
- window.mWelcomeView = welcomeView;
- window.Show();
- }
- internal static CloudEditionWelcomeWindow GetWelcomeWindow()
- {
- return GetWindow<CloudEditionWelcomeWindow>();
- }
- void OnEnable()
- {
- BuildComponents();
- }
- internal void CancelJoinOrganization()
- {
- if (sAutoLogin)
- {
- GetWindow<PlasticWindow>().GetWelcomeView().autoLoginState = AutoLogin.State.Started;
- }
- }
- internal void JoinOrganizationAndWelcomePage(string organization)
- {
- JoinOrganization(organization,
- mUserName,
- mAccessToken);
- GetWelcomePage.Run(sRestApi, organization);
- }
- internal void JoinOrganization(string organization)
- {
- JoinOrganization(organization,
- mUserName,
- mAccessToken);
- }
- internal static void JoinOrganization(string organization, string username, string accessToken)
- {
- SaveCloudServer.ToPlasticGuiConfig(organization);
- SaveCloudServer.ToPlasticGuiConfigFile(
- organization, GetPlasticConfigFileToSaveOrganization());
- SaveCloudServer.ToPlasticGuiConfigFile(
- organization, GetGluonConfigFileToSaveOrganization());
- KnownServers.ServersFromCloud.InitializeForWindows(
- PlasticGuiConfig.Get().Configuration.DefaultCloudServer);
- CloudEditionWelcome.WriteToTokensConf(
- organization,
- username,
- accessToken);
- if (sAutoLogin)
- {
- ClientConfigData clientConfigData = ConfigurationChecker.GetClientConfigData();
- clientConfigData.WorkspaceServer = organization;
- clientConfigData.WorkingMode = SEIDWorkingMode.SSOWorkingMode.ToString();
- clientConfigData.SecurityConfig = username;
- ClientConfig.Get().Save(clientConfigData);
- GetWindow<PlasticWindow>().GetWelcomeView().autoLoginState = AutoLogin.State.OrganizationChoosed;
- }
- }
- internal void ReplaceRootPanel(VisualElement panel)
- {
- rootVisualElement.Clear();
- rootVisualElement.Add(panel);
- }
- void OnDestroy()
- {
- Dispose();
- if (mWelcomeView != null)
- mWelcomeView.OnUserClosedConfigurationWindow();
- }
- void Dispose()
- {
- if (mSignInPanel != null)
- mSignInPanel.Dispose();
- if (mSSOSignUpPanel != null)
- mSSOSignUpPanel.Dispose();
- if (mOrganizationPanel != null)
- mOrganizationPanel.Dispose();
- }
- void OAuthSignIn.INotify.SuccessForConfigure(
- List<string> organizations,
- bool canCreateAnOrganization,
- string userName,
- string accessToken)
- {
- ShowOrganizationPanel(
- GetWindowTitle(),
- organizations,
- canCreateAnOrganization);
- Focus();
- mUserName = userName;
- mAccessToken = accessToken;
- }
- internal void ShowOrganizationPanel(
- string title,
- List<string> organizations,
- bool canCreateAnOrganization)
- {
- mOrganizationPanel = new OrganizationPanel(
- this,
- sRestApi,
- title,
- organizations,
- canCreateAnOrganization);
- ReplaceRootPanel(mOrganizationPanel);
- }
- void OAuthSignIn.INotify.SuccessForSSO(string organization)
- {
- // empty implementation
- }
- void OAuthSignIn.INotify.SuccessForProfile(string email)
- {
- // empty implementation
- }
- void OAuthSignIn.INotify.SuccessForCredentials(
- string email,
- string accessToken)
- {
- // empty implementation
- }
- void OAuthSignIn.INotify.Cancel(string errorMessage)
- {
- Focus();
- }
- void IWelcomeWindowNotify.SuccessForConfigure(
- List<string> organizations,
- bool canCreateAnOrganization)
- {
- ShowOrganizationPanel(
- GetWindowTitle(),
- organizations,
- canCreateAnOrganization);
- }
- internal void FillUserAndToken(
- string userName,
- string accessToken)
- {
- mUserName = userName;
- mAccessToken = accessToken;
- }
- internal void ShowOrganizationPanelFromAutoLogin(
- List<string> organizations,
- bool canCreateAnOrganization)
- {
- ShowOrganizationPanel(
- GetWindowTitle(),
- organizations,
- canCreateAnOrganization);
- }
- void IWelcomeWindowNotify.SuccessForSSO(string organization)
- {
- // empty implementation
- }
- void IWelcomeWindowNotify.SuccessForCredentials(string userName, string password)
- {
- // empty implementation
- }
- void IWelcomeWindowNotify.SuccessForProfile(string userName)
- {
- // empty implementation
- }
- void IWelcomeWindowNotify.SignUpNeeded(
- string user,
- string password)
- {
- SwitchToSignUpPage(user, password);
- }
- void IWelcomeWindowNotify.Back()
- {
- rootVisualElement.Clear();
- rootVisualElement.Add(mTabView);
- }
- void SwitchToSignUpPage(
- string user,
- string password)
- {
- mSSOSignUpPanel.SetSignUpData(user, password);
- rootVisualElement.Clear();
- rootVisualElement.Add(mTabView);
- mTabView.SwitchContent(mSSOSignUpPanel);
- }
- string GetWindowTitle()
- {
- return mIsOnSignIn ?
- PlasticLocalization.GetString(PlasticLocalization.Name.SignInToPlasticSCM) :
- PlasticLocalization.GetString(PlasticLocalization.Name.SignUp);
- }
- internal static string GetPlasticConfigFileToSaveOrganization()
- {
- if (PlatformIdentifier.IsMac())
- {
- return "macgui.conf";
- }
- return "plasticgui.conf";
- }
- internal static string GetGluonConfigFileToSaveOrganization()
- {
- if (PlatformIdentifier.IsMac())
- {
- return "gluon.conf";
- }
- return "gameui.conf";
- }
- void BuildComponents()
- {
- VisualElement root = rootVisualElement;
- root.Clear();
- mTabView = new TabView();
- mSignInPanel = new SignInPanel(
- this,
- sRestApi,
- sCmConnection);
- mSSOSignUpPanel = new SSOSignUpPanel(
- this,
- sRestApi,
- sCmConnection);
- mTabView.AddTab(
- PlasticLocalization.GetString(PlasticLocalization.Name.SignIn),
- mSignInPanel).clicked += () =>
- {
- mIsOnSignIn = true;
- titleContent = new GUIContent(GetWindowTitle());
- };
- mTabView.AddTab(
- PlasticLocalization.GetString(PlasticLocalization.Name.SignUp),
- mSSOSignUpPanel).clicked += () =>
- {
- mIsOnSignIn = false;
- titleContent = new GUIContent(GetWindowTitle());
- };
- root.Add(mTabView);
- if (sAutoLogin)
- mSignInPanel.SignInWithUnityIdButtonAutoLogin();
- }
- internal TabView mTabView;
- OrganizationPanel mOrganizationPanel;
- SignInPanel mSignInPanel;
- SSOSignUpPanel mSSOSignUpPanel;
- WelcomeView mWelcomeView;
- string mUserName;
- string mAccessToken;
-
- bool mIsOnSignIn = true;
- static IPlasticWebRestApi sRestApi;
- static CmConnection sCmConnection;
- static bool sAutoLogin = false;
- }
- }
|