No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CreateBranchDialog.cs 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. using UnityEditor;
  2. using UnityEngine;
  3. using Codice.CM.Common;
  4. using PlasticGui;
  5. using PlasticGui.WorkspaceWindow.QueryViews.Branches;
  6. using Unity.PlasticSCM.Editor.UI;
  7. using Unity.PlasticSCM.Editor.UI.Progress;
  8. namespace Unity.PlasticSCM.Editor.Views.Branches
  9. {
  10. class CreateBranchDialog : PlasticDialog
  11. {
  12. protected override Rect DefaultRect
  13. {
  14. get
  15. {
  16. var baseRect = base.DefaultRect;
  17. return new Rect(baseRect.x, baseRect.y, 710, 290);
  18. }
  19. }
  20. protected override string GetTitle()
  21. {
  22. return PlasticLocalization.GetString(PlasticLocalization.Name.CreateChildBranchTitle);
  23. }
  24. protected override void OnModalGUI()
  25. {
  26. DoTitleArea();
  27. DoFieldsArea();
  28. DoButtonsArea();
  29. }
  30. internal static BranchCreationData CreateBranchFromLastParentBranchChangeset(
  31. EditorWindow parentWindow,
  32. RepositorySpec repSpec,
  33. BranchInfo parentBranchInfo )
  34. {
  35. string changesetStr = PlasticLocalization.GetString(
  36. PlasticLocalization.Name.LastChangeset);
  37. string explanation = BranchCreationUserInfo.GetFromObjectString(
  38. repSpec, parentBranchInfo, changesetStr);
  39. CreateBranchDialog dialog = Create(repSpec, parentBranchInfo, explanation);
  40. ResponseType dialogueResult = dialog.RunModal(parentWindow);
  41. BranchCreationData result = dialog.BuildCreationData();
  42. result.Result = dialogueResult == ResponseType.Ok;
  43. return result;
  44. }
  45. void DoTitleArea()
  46. {
  47. GUILayout.BeginVertical();
  48. Title(PlasticLocalization.GetString(PlasticLocalization.Name.CreateChildBranchTitle));
  49. GUILayout.Space(5);
  50. Paragraph(string.Format("{0} {1}", PlasticLocalization.GetString(
  51. PlasticLocalization.Name.CreateChildBranchExplanation), mExplanation));
  52. GUILayout.EndVertical();
  53. }
  54. void DoFieldsArea()
  55. {
  56. GUILayout.BeginVertical();
  57. using (new EditorGUILayout.HorizontalScope())
  58. {
  59. GUILayout.Label(
  60. PlasticLocalization.GetString(PlasticLocalization.Name.BranchNameEntry),
  61. GUILayout.Width(100));
  62. GUI.SetNextControlName(NAME_FIELD_CONTROL_NAME);
  63. mNewBranchName = GUILayout.TextField(mNewBranchName);
  64. if (!mWasNameFieldFocused)
  65. {
  66. EditorGUI.FocusTextInControl(NAME_FIELD_CONTROL_NAME);
  67. mWasNameFieldFocused = true;
  68. }
  69. GUILayout.Space(5);
  70. }
  71. GUILayout.Space(5);
  72. using (new EditorGUILayout.HorizontalScope())
  73. {
  74. using (new EditorGUILayout.VerticalScope(GUILayout.Width(100)))
  75. {
  76. GUILayout.Space(49);
  77. GUILayout.Label(
  78. PlasticLocalization.GetString(PlasticLocalization.Name.CommentsEntry),
  79. GUILayout.Width(100));
  80. }
  81. mComment = GUILayout.TextArea(mComment, GUILayout.Height(100));
  82. GUILayout.Space(5);
  83. }
  84. GUILayout.Space(5);
  85. mSwitchToBranch = GUILayout.Toggle(mSwitchToBranch, PlasticLocalization.GetString(PlasticLocalization.Name.SwitchToBranchCheckButton));
  86. GUILayout.Space(5);
  87. GUILayout.EndVertical();
  88. }
  89. void DoButtonsArea()
  90. {
  91. using (new EditorGUILayout.HorizontalScope())
  92. {
  93. using (new EditorGUILayout.HorizontalScope(GUILayout.MinWidth(500)))
  94. {
  95. GUILayout.Space(2);
  96. DrawProgressForDialogs.For(
  97. mProgressControls.ProgressData);
  98. GUILayout.Space(2);
  99. }
  100. GUILayout.FlexibleSpace();
  101. DoCreateButton();
  102. DoCancelButton();
  103. }
  104. }
  105. void DoCancelButton()
  106. {
  107. if (NormalButton(PlasticLocalization.GetString(
  108. PlasticLocalization.Name.CancelButton)))
  109. {
  110. CancelButtonAction();
  111. }
  112. }
  113. void DoCreateButton()
  114. {
  115. if (!NormalButton(PlasticLocalization.GetString(PlasticLocalization.Name.CreateButton)))
  116. return;
  117. BranchCreationValidation.AsyncValidation(
  118. BuildCreationData(), this, mProgressControls);
  119. }
  120. static CreateBranchDialog Create(RepositorySpec repSpec, BranchInfo parentBranchInfo, string explanation)
  121. {
  122. var instance = CreateInstance<CreateBranchDialog>();
  123. instance.IsResizable = false;
  124. instance.mEscapeKeyAction = instance.CloseButtonAction;
  125. instance.mRepositorySpec = repSpec;
  126. instance.mParentBranchInfo = parentBranchInfo;
  127. instance.mNewBranchName = "";
  128. instance.mComment = "";
  129. instance.mSwitchToBranch = true;
  130. instance.mProgressControls = new ProgressControlsForDialogs();
  131. instance.mExplanation = explanation;
  132. return instance;
  133. }
  134. BranchCreationData BuildCreationData()
  135. {
  136. return new BranchCreationData(
  137. mRepositorySpec,
  138. mParentBranchInfo,
  139. mParentBranchInfo.Changeset,
  140. mNewBranchName,
  141. mComment,
  142. null,
  143. mSwitchToBranch);
  144. }
  145. ProgressControlsForDialogs mProgressControls;
  146. RepositorySpec mRepositorySpec;
  147. BranchInfo mParentBranchInfo;
  148. string mNewBranchName;
  149. string mComment;
  150. bool mSwitchToBranch;
  151. string mExplanation;
  152. bool mWasNameFieldFocused;
  153. const string NAME_FIELD_CONTROL_NAME = "CreateBranchNameField";
  154. }
  155. }