123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- using UnityEditor;
- using UnityEngine;
-
- using Codice.Client.Common;
- using PlasticGui;
- using PlasticGui.WebApi;
- using Unity.PlasticSCM.Editor.AssetUtils;
- using Unity.PlasticSCM.Editor.UI;
- using Unity.PlasticSCM.Editor.Views.CreateWorkspace;
- using Unity.PlasticSCM.Editor.UI.Progress;
- using Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome;
- using Codice.Client.BaseCommands;
- using Unity.PlasticSCM.Editor.Configuration.TeamEdition;
- using Codice.CM.Common;
-
- namespace Unity.PlasticSCM.Editor.Views.Welcome
- {
- internal class WelcomeView
- {
- internal WelcomeView(
- PlasticWindow parentWindow,
- CreateWorkspaceView.ICreateWorkspaceListener createWorkspaceListener,
- IPlasticAPI plasticApi,
- IPlasticWebRestApi plasticWebRestApi,
- CmConnection cmConnection)
- {
- mParentWindow = parentWindow;
- mCreateWorkspaceListener = createWorkspaceListener;
- mPlasticApi = plasticApi;
- mPlasticWebRestApi = plasticWebRestApi;
- mCmConnection = cmConnection;
-
- mGuiMessage = new UnityPlasticGuiMessage();
- mConfigureProgress = new ProgressControlsForViews();
-
- mInstallerFile = GetInstallerTmpFileName.ForPlatform();
- autoLoginState = AutoLogin.State.Off;
- }
-
- internal void Update()
- {
- if (mCreateWorkspaceView != null)
- mCreateWorkspaceView.Update();
-
- mConfigureProgress.UpdateDeterminateProgress(mParentWindow);
- }
-
- internal void OnGUI(bool clientNeedsConfiguration)
- {
- GUILayout.BeginHorizontal();
-
- GUILayout.Space(LEFT_MARGIN);
-
- DoContentViewArea(
- clientNeedsConfiguration,
- mIsCreateWorkspaceButtonClicked,
- mInstallerFile,
- mGuiMessage,
- mConfigureProgress);
-
- GUILayout.EndHorizontal();
- }
-
- internal void OnUserClosedConfigurationWindow()
- {
- ((IProgressControls)mConfigureProgress).HideProgress();
-
- ClientConfig.Reset();
- CmConnection.Reset();
- ClientHandlers.Register();
- }
-
- void DoContentViewArea(
- bool clientNeedsConfiguration,
- bool isCreateWorkspaceButtonClicked,
- string installerFile,
- GuiMessage.IGuiMessage guiMessage,
- ProgressControlsForViews configureProgress)
- {
- GUILayout.BeginVertical();
-
- GUILayout.Space(TOP_MARGIN);
-
- if (isCreateWorkspaceButtonClicked)
- GetCreateWorkspaceView().OnGUI();
- else
- DoSetupViewArea(
- clientNeedsConfiguration,
- mInstallerFile,
- mGuiMessage,
- mConfigureProgress);
-
- GUILayout.EndVertical();
- }
-
- void DoSetupViewArea(
- bool clientNeedsConfiguration,
- string installerFile,
- GuiMessage.IGuiMessage guiMessage,
- ProgressControlsForViews configureProgress)
- {
- DoTitleLabel();
-
- GUILayout.Space(STEPS_TOP_MARGIN);
-
- bool isStep1Completed =
- !clientNeedsConfiguration &&
- !configureProgress.ProgressData.IsOperationRunning;
-
- DoStepsArea(isStep1Completed, configureProgress.ProgressData);
-
- GUILayout.Space(BUTTON_MARGIN);
-
- DoActionButtonsArea(
- isStep1Completed,
- installerFile,
- guiMessage,
- configureProgress);
-
- DoNotificationArea(configureProgress.ProgressData);
- }
-
- void DoActionButtonsArea(
- bool isStep1Completed,
- string installerFile,
- GuiMessage.IGuiMessage guiMessage,
- ProgressControlsForViews configureProgress)
- {
- DoActionButton(
- isStep1Completed,
- installerFile,
- guiMessage,
- configureProgress);
- }
-
- void DoActionButton(
- bool isStep1Completed,
- string installerFile,
- GuiMessage.IGuiMessage guiMessage,
- ProgressControlsForViews configureProgress)
- {
- if (!isStep1Completed)
- {
- DoConfigureButton(configureProgress);
- return;
- }
-
- if (GUILayout.Button(
- PlasticLocalization.GetString(PlasticLocalization.Name.CreateWorkspace),
- GUILayout.Width(BUTTON_WIDTH)))
- mIsCreateWorkspaceButtonClicked = true;
- }
-
- void DoConfigureButton(ProgressControlsForViews configureProgress)
- {
- bool isAutoLoginRunning = autoLoginState > AutoLogin.State.Running && autoLoginState <= AutoLogin.State.InitializingPlastic;
- GUI.enabled = !(configureProgress.ProgressData.IsOperationRunning || isAutoLoginRunning);
-
- if (GUILayout.Button(PlasticLocalization.GetString(
- PlasticLocalization.Name.LoginOrSignUp),
- GUILayout.Width(BUTTON_WIDTH)))
- {
- if (autoLoginState > AutoLogin.State.Off && autoLoginState <= AutoLogin.State.InitializingPlastic)
- {
- autoLoginState = AutoLogin.State.Running;
- AutoLogin autoLogin = new AutoLogin();
- autoLogin.Run();
- }
-
- if (autoLoginState != AutoLogin.State.ErrorNoToken)
- {
- return;
- }
-
- ((IProgressControls)configureProgress).ShowProgress(string.Empty);
-
- // Login button defaults to Cloud sign up
- CloudEditionWelcomeWindow.ShowWindow(
- mPlasticWebRestApi,
- mCmConnection,
- this);
-
- GUIUtility.ExitGUI();
- }
-
- // If client configuration cannot be determined, keep login button default as Cloud
- // sign in window, but show Enterprise option as well
- GUILayout.FlexibleSpace();
-
- var anchorStyle = new GUIStyle(GUI.skin.label);
- anchorStyle.normal.textColor = new Color(0.129f, 0.588f, 0.953f);
- anchorStyle.hover.textColor = new Color(0.239f, 0.627f, 0.949f);
- anchorStyle.active.textColor = new Color(0.239f, 0.627f, 0.949f);
-
- if (GUILayout.Button(
- PlasticLocalization.GetString(
- PlasticLocalization.Name.NeedEnterprise),
- anchorStyle,
- GUILayout.Width(BUTTON_WIDTH),
- GUILayout.Height(20)))
- TeamEditionConfigurationWindow.ShowWindow(mPlasticWebRestApi, this);
-
- GUILayout.Space(BUTTON_MARGIN);
-
- GUI.enabled = true;
- }
-
- static void DoStepsArea(
- bool isStep1Completed,
- ProgressControlsForViews.Data configureProgressData)
- {
- DoLoginOrSignUpStep(isStep1Completed, configureProgressData);
-
- DoCreatePlasticWorkspaceStep();
- }
-
- static void DoLoginOrSignUpStep(
- bool isStep1Completed,
- ProgressControlsForViews.Data progressData)
- {
- Texture2D stepImage = (isStep1Completed) ? Images.GetStepOkIcon() : Images.GetStep1Icon();
-
- string stepText = GetConfigurationStepText(progressData, isStep1Completed);
-
- GUIStyle style = new GUIStyle(EditorStyles.label);
- style.richText = true;
-
- GUILayout.BeginHorizontal();
-
- DoStepLabel(stepText, stepImage, style);
-
- GUILayout.EndHorizontal();
- }
-
- static void DoCreatePlasticWorkspaceStep()
- {
- GUILayout.BeginHorizontal();
-
- DoStepLabel(
- PlasticLocalization.GetString(PlasticLocalization.Name.CreateAUnityVersionControlWorkspace),
- Images.GetStep2Icon(),
- EditorStyles.label);
-
- GUILayout.EndHorizontal();
- }
-
- static void DoStepLabel(
- string text,
- Texture2D image,
- GUIStyle style)
- {
- GUILayout.Space(STEPS_LEFT_MARGIN);
-
- GUIContent stepLabelContent = new GUIContent(
- string.Format(" {0}", text),
- image);
-
- GUILayout.Label(
- stepLabelContent,
- style,
- GUILayout.Height(STEP_LABEL_HEIGHT));
- }
-
- static void DoTitleLabel()
- {
- GUIContent labelContent = new GUIContent(
- PlasticLocalization.GetString(PlasticLocalization.Name.NextStepsToSetup),
- Images.GetInfoIcon());
-
- GUILayout.Label(labelContent, EditorStyles.boldLabel);
- }
-
- static void DoNotificationArea(ProgressControlsForViews.Data configureProgressData)
- {
- if (!string.IsNullOrEmpty(configureProgressData.NotificationMessage))
- DrawProgressForViews.ForNotificationArea(configureProgressData);
- }
-
- static string GetConfigurationStepText(
- ProgressControlsForViews.Data progressData,
- bool isStep1Completed)
- {
- string result = PlasticLocalization.GetString(
- PlasticLocalization.Name.LoginOrSignUpUnityVersionControl);
-
- if (isStep1Completed)
- return result;
-
- if (!progressData.IsOperationRunning)
- return result;
-
- return string.Format("<b>{0}</b>", result);
- }
-
- CreateWorkspaceView GetCreateWorkspaceView()
- {
- if (mCreateWorkspaceView != null)
- return mCreateWorkspaceView;
-
- string workspacePath = ProjectPath.FromApplicationDataPath(
- ApplicationDataPath.Get());
-
- mCreateWorkspaceView = new CreateWorkspaceView(
- mParentWindow,
- mCreateWorkspaceListener,
- mPlasticApi,
- mPlasticWebRestApi,
- workspacePath);
-
- return mCreateWorkspaceView;
- }
-
- internal AutoLogin.State autoLoginState = AutoLogin.State.Off;
-
- string mInstallerFile;
- bool mIsCreateWorkspaceButtonClicked = false;
-
- CreateWorkspaceView mCreateWorkspaceView;
- readonly ProgressControlsForViews mConfigureProgress;
- readonly GuiMessage.IGuiMessage mGuiMessage;
- readonly CmConnection mCmConnection;
- readonly IPlasticAPI mPlasticApi;
- readonly IPlasticWebRestApi mPlasticWebRestApi;
- readonly CreateWorkspaceView.ICreateWorkspaceListener mCreateWorkspaceListener;
- readonly PlasticWindow mParentWindow;
-
- const int LEFT_MARGIN = 30;
- const int TOP_MARGIN = 20;
- const int STEPS_TOP_MARGIN = 5;
- const int STEPS_LEFT_MARGIN = 12;
- const int BUTTON_MARGIN = 10;
- const int STEP_LABEL_HEIGHT = 20;
- const int BUTTON_WIDTH = 170;
-
- const string DOWNLOAD_URL = @"https://www.plasticscm.com/download";
- }
- }
|