A game about forced loneliness, made by TACStudios
at master 208 lines 5.9 kB view raw
1using UnityEditor; 2using UnityEngine; 3 4using Codice.Client.Common; 5 6using Codice.Client.Commands; 7using PlasticGui; 8using PlasticGui.WorkspaceWindow.Update; 9using Unity.PlasticSCM.Editor.UI; 10 11namespace Unity.PlasticSCM.Editor.Views 12{ 13 internal class ContinueWithPendingChangesQuestionerBuilder : 14 SwitchController.IContinueWithPendingChangesQuestionerBuilder 15 { 16 internal ContinueWithPendingChangesQuestionerBuilder( 17 IViewSwitcher viewSwitcher, 18 EditorWindow parentWindow) 19 { 20 mViewSwitcher = viewSwitcher; 21 mParentWindow = parentWindow; 22 } 23 24 public IContinueWithPendingChangesQuestioner Get(string title, string explanation) 25 { 26 return new ContinueWithPendingChangesQuestioner( 27 title, 28 explanation, 29 mViewSwitcher, 30 mParentWindow); 31 } 32 33 IViewSwitcher mViewSwitcher; 34 EditorWindow mParentWindow; 35 } 36 37 internal class ContinueWithPendingChangesQuestioner : IContinueWithPendingChangesQuestioner 38 { 39 internal ContinueWithPendingChangesQuestioner( 40 string title, 41 string explanation, 42 IViewSwitcher viewSwitcher, 43 EditorWindow parentWindow) 44 { 45 mTitle = title; 46 mExplanation = explanation; 47 mViewSwitcher = viewSwitcher; 48 mParentWindow = parentWindow; 49 } 50 51 public bool ContinueWithPendingChanges() 52 { 53 bool result = false; 54 55 GUIActionRunner.RunGUIAction(() => 56 { 57 result = ConfirmContinueWithPendingChangesDialog.ConfirmContinue( 58 mTitle, 59 mExplanation, 60 mViewSwitcher, 61 mParentWindow); 62 }); 63 64 return result; 65 } 66 67 string mTitle; 68 string mExplanation; 69 IViewSwitcher mViewSwitcher; 70 EditorWindow mParentWindow; 71 } 72 73 internal class ConfirmContinueWithPendingChangesDialog : PlasticDialog 74 { 75 protected override Rect DefaultRect 76 { 77 get 78 { 79 var baseRect = base.DefaultRect; 80 return new Rect(baseRect.x, baseRect.y, 500, 287); 81 } 82 } 83 84 internal static bool ConfirmContinue( 85 string title, 86 string explanation, 87 IViewSwitcher viewSwitcher, 88 EditorWindow parentWindow) 89 { 90 ConfirmContinueWithPendingChangesDialog dialog = Create( 91 title, 92 explanation, 93 viewSwitcher); 94 95 if (dialog.RunModal(parentWindow) != ResponseType.Ok) 96 return false; 97 98 if (dialog.mIsSwitchToConfirmationChecked) 99 SavePreference(); 100 101 return true; 102 } 103 104 static ConfirmContinueWithPendingChangesDialog Create( 105 string title, 106 string explanation, 107 IViewSwitcher viewSwitcher) 108 { 109 var instance = CreateInstance<ConfirmContinueWithPendingChangesDialog>(); 110 instance.mTitle = title; 111 instance.mExplanation = explanation; 112 instance.mViewSwitcher = viewSwitcher; 113 return instance; 114 } 115 116 static void SavePreference() 117 { 118 ClientConfigData data = ClientConfig.Get().GetClientConfigData(); 119 data.SetPendingChangesOnSwitchAction(UserAction.None); 120 ClientConfig.Get().Save(data); 121 } 122 123 protected override string GetTitle() 124 { 125 return mTitle; 126 } 127 128 protected override void OnModalGUI() 129 { 130 Title(mTitle); 131 132 Paragraph(mExplanation); 133 134 DoSwitchToConfirmationCheckButton(); 135 136 GUILayout.Space(10); 137 138 DoButtonsArea(); 139 } 140 141 void DoSwitchToConfirmationCheckButton() 142 { 143 using (new EditorGUILayout.HorizontalScope()) 144 { 145 GUILayout.FlexibleSpace(); 146 147 mIsSwitchToConfirmationChecked = TitleToggle( 148 PlasticLocalization.GetString( 149 PlasticLocalization.Name.SwitchToConfirmationCheckButton), 150 mIsSwitchToConfirmationChecked); 151 } 152 } 153 154 void DoButtonsArea() 155 { 156 using (new EditorGUILayout.HorizontalScope()) 157 { 158 GUILayout.FlexibleSpace(); 159 160 if (Application.platform == RuntimePlatform.WindowsEditor) 161 { 162 DoContinueButton(); 163 DoCancelAndViewPendingChangesButton(); 164 DoCancelButton(); 165 return; 166 } 167 168 DoCancelButton(); 169 DoCancelAndViewPendingChangesButton(); 170 DoContinueButton(); 171 } 172 } 173 174 void DoContinueButton() 175 { 176 if (!NormalButton(PlasticLocalization.GetString( 177 PlasticLocalization.Name.SwitchToConfirmationContinueButton))) 178 return; 179 180 OkButtonAction(); 181 } 182 183 void DoCancelButton() 184 { 185 if (!NormalButton(PlasticLocalization.GetString( 186 PlasticLocalization.Name.CancelButton))) 187 return; 188 189 CancelButtonAction(); 190 } 191 192 void DoCancelAndViewPendingChangesButton() 193 { 194 if (!NormalButton(PlasticLocalization.GetString( 195 PlasticLocalization.Name.SwitchToConfirmationCancelViewChangesButton))) 196 return; 197 198 mViewSwitcher.ShowPendingChanges(); 199 CancelButtonAction(); 200 } 201 202 string mTitle; 203 string mExplanation; 204 IViewSwitcher mViewSwitcher; 205 206 bool mIsSwitchToConfirmationChecked; 207 } 208}