A game about forced loneliness, made by TACStudios
at master 186 lines 5.4 kB view raw
1using UnityEditor; 2using UnityEngine; 3 4using Codice.Utils; 5using PlasticGui; 6using PlasticGui.WorkspaceWindow.Home; 7using Unity.PlasticSCM.Editor.UI; 8 9namespace Unity.PlasticSCM.Editor.Configuration 10{ 11 internal class EncryptionConfigurationDialog : PlasticDialog 12 { 13 protected override Rect DefaultRect 14 { 15 get 16 { 17 var baseRect = base.DefaultRect; 18 return new Rect(baseRect.x, baseRect.y, 650, 425); 19 } 20 } 21 22 internal static EncryptionConfigurationDialogData RequestEncryptionPassword( 23 string server, 24 EditorWindow parentWindow) 25 { 26 EncryptionConfigurationDialog dialog = Create(server); 27 28 ResponseType dialogResult = dialog.RunModal(parentWindow); 29 30 EncryptionConfigurationDialogData result = 31 dialog.BuildEncryptionConfigurationData(); 32 33 result.Result = dialogResult == ResponseType.Ok; 34 return result; 35 } 36 37 protected override void OnModalGUI() 38 { 39 Title(PlasticLocalization.Name.EncryptionConfiguration.GetString()); 40 41 GUILayout.Space(20); 42 43 Paragraph(PlasticLocalization.Name.EncryptionConfigurationExplanation.GetString(mOrganizationInfo.DisplayName)); 44 45 DoPasswordArea(); 46 47 Paragraph(PlasticLocalization.Name.EncryptionConfigurationRemarks.GetString(mOrganizationInfo.DisplayName)); 48 49 GUILayout.Space(10); 50 51 DoNotificationArea(); 52 53 GUILayout.Space(10); 54 55 DoButtonsArea(); 56 } 57 58 protected override string GetTitle() 59 { 60 return PlasticLocalization.Name.EncryptionConfiguration.GetString(); 61 } 62 63 EncryptionConfigurationDialogData BuildEncryptionConfigurationData() 64 { 65 return new EncryptionConfigurationDialogData( 66 CryptoServices.GetEncryptedPassword(mPassword.Trim())); 67 } 68 69 void DoPasswordArea() 70 { 71 Paragraph(PlasticLocalization.Name.EncryptionConfigurationEnterPassword.GetString()); 72 73 GUILayout.Space(5); 74 75 mPassword = PasswordEntry(PlasticLocalization.Name.Password.GetString(), 76 mPassword, PASSWORD_TEXT_WIDTH, PASSWORD_TEXT_X); 77 78 GUILayout.Space(5); 79 80 mRetypePassword = PasswordEntry(PlasticLocalization.Name.RetypePassword.GetString(), 81 mRetypePassword, PASSWORD_TEXT_WIDTH, PASSWORD_TEXT_X); 82 83 GUILayout.Space(18f); 84 } 85 86 void DoNotificationArea() 87 { 88 if (string.IsNullOrEmpty(mErrorMessage)) 89 return; 90 91 var rect = GUILayoutUtility.GetRect( 92 GUILayoutUtility.GetLastRect().width, 30); 93 94 EditorGUI.HelpBox(rect, mErrorMessage, MessageType.Error); 95 } 96 97 void DoButtonsArea() 98 { 99 using (new EditorGUILayout.HorizontalScope()) 100 { 101 GUILayout.FlexibleSpace(); 102 103 if (Application.platform == RuntimePlatform.WindowsEditor) 104 { 105 DoOkButton(); 106 DoCancelButton(); 107 return; 108 } 109 110 DoCancelButton(); 111 DoOkButton(); 112 } 113 } 114 115 void DoOkButton() 116 { 117 if (!AcceptButton(PlasticLocalization.Name.OkButton.GetString())) 118 return; 119 120 OkButtonWithValidationAction(); 121 } 122 123 void DoCancelButton() 124 { 125 if (!NormalButton(PlasticLocalization.Name.CancelButton.GetString())) 126 return; 127 128 CancelButtonAction(); 129 } 130 131 void OkButtonWithValidationAction() 132 { 133 if (IsValidPassword( 134 mPassword.Trim(), mRetypePassword.Trim(), 135 out mErrorMessage)) 136 { 137 mErrorMessage = string.Empty; 138 OkButtonAction(); 139 return; 140 } 141 142 mPassword = string.Empty; 143 mRetypePassword = string.Empty; 144 } 145 146 static bool IsValidPassword( 147 string password, string retypePassword, 148 out string errorMessage) 149 { 150 errorMessage = string.Empty; 151 152 if (string.IsNullOrEmpty(password)) 153 { 154 errorMessage = PlasticLocalization.Name.InvalidEmptyPassword.GetString(); 155 return false; 156 } 157 158 if (!password.Equals(retypePassword)) 159 { 160 errorMessage = PlasticLocalization.Name.PasswordDoesntMatch.GetString(); 161 return false; 162 } 163 164 return true; 165 } 166 167 static EncryptionConfigurationDialog Create(string server) 168 { 169 var instance = CreateInstance<EncryptionConfigurationDialog>(); 170 instance.mOrganizationInfo = OrganizationsInformation.FromServer(server); 171 instance.mEnterKeyAction = instance.OkButtonWithValidationAction; 172 instance.mEscapeKeyAction = instance.CancelButtonAction; 173 return instance; 174 } 175 176 string mPassword = string.Empty; 177 string mRetypePassword = string.Empty; 178 string mErrorMessage = string.Empty; 179 180 OrganizationInfo mOrganizationInfo; 181 182 const float PASSWORD_TEXT_WIDTH = 250f; 183 const float PASSWORD_TEXT_X = 200f; 184 } 185} 186