暫無描述
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.

BranchesViewMenu.cs 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using UnityEditor;
  2. using UnityEngine;
  3. using PlasticGui;
  4. using PlasticGui.WorkspaceWindow.QueryViews.Branches;
  5. using Unity.PlasticSCM.Editor.UI;
  6. namespace Unity.PlasticSCM.Editor.Views.Branches
  7. {
  8. internal class BranchesViewMenu
  9. {
  10. internal GenericMenu Menu { get { return mMenu; } }
  11. internal BranchesViewMenu(
  12. IBranchMenuOperations branchMenuOperations)
  13. {
  14. mBranchMenuOperations = branchMenuOperations;
  15. BuildComponents();
  16. }
  17. internal void Popup()
  18. {
  19. mMenu = new GenericMenu();
  20. UpdateMenuItems(mMenu);
  21. mMenu.ShowAsContext();
  22. }
  23. internal bool ProcessKeyActionIfNeeded(Event e)
  24. {
  25. BranchMenuOperations operationToExecute = GetMenuOperations(e);
  26. if (operationToExecute == BranchMenuOperations.None)
  27. return false;
  28. BranchMenuOperations operations =
  29. BranchMenuUpdater.GetAvailableMenuOperations(
  30. mBranchMenuOperations.GetSelectedBranchesCount(),
  31. false);
  32. if (!operations.HasFlag(operationToExecute))
  33. return false;
  34. ProcessMenuOperation(operationToExecute, mBranchMenuOperations);
  35. return true;
  36. }
  37. void CreateBranchMenuItem_Click()
  38. {
  39. mBranchMenuOperations.CreateBranch();
  40. }
  41. void SwitchToBranchMenuItem_Click()
  42. {
  43. mBranchMenuOperations.SwitchToBranch();
  44. }
  45. void RenameBranchMenuItem_Click()
  46. {
  47. mBranchMenuOperations.RenameBranch();
  48. }
  49. void DeleteBranchMenuItem_Click()
  50. {
  51. mBranchMenuOperations.DeleteBranch();
  52. }
  53. internal void UpdateMenuItems(GenericMenu menu)
  54. {
  55. BranchMenuOperations operations = BranchMenuUpdater.GetAvailableMenuOperations(
  56. mBranchMenuOperations.GetSelectedBranchesCount(), false);
  57. AddBranchMenuItem(
  58. mCreateBranchMenuItemContent,
  59. menu,
  60. operations,
  61. BranchMenuOperations.CreateBranch,
  62. CreateBranchMenuItem_Click);
  63. AddBranchMenuItem(
  64. mSwitchToBranchMenuItemContent,
  65. menu,
  66. operations,
  67. BranchMenuOperations.SwitchToBranch,
  68. SwitchToBranchMenuItem_Click);
  69. menu.AddSeparator("");
  70. AddBranchMenuItem(
  71. mRenameBranchMenuItemContent,
  72. menu,
  73. operations,
  74. BranchMenuOperations.Rename,
  75. RenameBranchMenuItem_Click);
  76. AddBranchMenuItem(
  77. mDeleteBranchMenuItemContent,
  78. menu,
  79. operations,
  80. BranchMenuOperations.Delete,
  81. DeleteBranchMenuItem_Click);
  82. }
  83. static void AddBranchMenuItem(
  84. GUIContent menuItemContent,
  85. GenericMenu menu,
  86. BranchMenuOperations operations,
  87. BranchMenuOperations operationsToCheck,
  88. GenericMenu.MenuFunction menuFunction)
  89. {
  90. if (operations.HasFlag(operationsToCheck))
  91. {
  92. menu.AddItem(
  93. menuItemContent,
  94. false,
  95. menuFunction);
  96. return;
  97. }
  98. menu.AddDisabledItem(menuItemContent);
  99. }
  100. static void ProcessMenuOperation(
  101. BranchMenuOperations operationToExecute,
  102. IBranchMenuOperations branchMenuOperations)
  103. {
  104. if (operationToExecute == BranchMenuOperations.Delete)
  105. {
  106. branchMenuOperations.DeleteBranch();
  107. return;
  108. }
  109. }
  110. static BranchMenuOperations GetMenuOperations(Event e)
  111. {
  112. if (Keyboard.IsKeyPressed(e, KeyCode.Delete))
  113. return BranchMenuOperations.Delete;
  114. return BranchMenuOperations.None;
  115. }
  116. void BuildComponents()
  117. {
  118. mCreateBranchMenuItemContent = new GUIContent(
  119. PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemCreateBranch));
  120. mSwitchToBranchMenuItemContent = new GUIContent(
  121. PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemSwitchToBranch));
  122. mRenameBranchMenuItemContent = new GUIContent(
  123. PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemRenameBranch));
  124. mDeleteBranchMenuItemContent = new GUIContent(string.Format("{0} {1}",
  125. PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemDeleteBranch),
  126. GetPlasticShortcut.ForDelete()));
  127. }
  128. GenericMenu mMenu;
  129. GUIContent mCreateBranchMenuItemContent;
  130. GUIContent mSwitchToBranchMenuItemContent;
  131. GUIContent mRenameBranchMenuItemContent;
  132. GUIContent mDeleteBranchMenuItemContent;
  133. readonly IBranchMenuOperations mBranchMenuOperations;
  134. }
  135. }