166 lines
5.0 KiB
C#
166 lines
5.0 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
using PlasticGui;
|
|
using PlasticGui.WorkspaceWindow.QueryViews.Branches;
|
|
using Unity.PlasticSCM.Editor.UI;
|
|
|
|
namespace Unity.PlasticSCM.Editor.Views.Branches
|
|
{
|
|
internal class BranchesViewMenu
|
|
{
|
|
internal GenericMenu Menu { get { return mMenu; } }
|
|
|
|
internal BranchesViewMenu(
|
|
IBranchMenuOperations branchMenuOperations)
|
|
{
|
|
mBranchMenuOperations = branchMenuOperations;
|
|
|
|
BuildComponents();
|
|
}
|
|
|
|
internal void Popup()
|
|
{
|
|
mMenu = new GenericMenu();
|
|
|
|
UpdateMenuItems(mMenu);
|
|
|
|
mMenu.ShowAsContext();
|
|
}
|
|
|
|
internal bool ProcessKeyActionIfNeeded(Event e)
|
|
{
|
|
BranchMenuOperations operationToExecute = GetMenuOperations(e);
|
|
|
|
if (operationToExecute == BranchMenuOperations.None)
|
|
return false;
|
|
|
|
BranchMenuOperations operations =
|
|
BranchMenuUpdater.GetAvailableMenuOperations(
|
|
mBranchMenuOperations.GetSelectedBranchesCount(),
|
|
false);
|
|
|
|
if (!operations.HasFlag(operationToExecute))
|
|
return false;
|
|
|
|
ProcessMenuOperation(operationToExecute, mBranchMenuOperations);
|
|
return true;
|
|
}
|
|
|
|
void CreateBranchMenuItem_Click()
|
|
{
|
|
mBranchMenuOperations.CreateBranch();
|
|
}
|
|
|
|
void SwitchToBranchMenuItem_Click()
|
|
{
|
|
mBranchMenuOperations.SwitchToBranch();
|
|
}
|
|
|
|
void RenameBranchMenuItem_Click()
|
|
{
|
|
mBranchMenuOperations.RenameBranch();
|
|
}
|
|
|
|
void DeleteBranchMenuItem_Click()
|
|
{
|
|
mBranchMenuOperations.DeleteBranch();
|
|
}
|
|
|
|
internal void UpdateMenuItems(GenericMenu menu)
|
|
{
|
|
BranchMenuOperations operations = BranchMenuUpdater.GetAvailableMenuOperations(
|
|
mBranchMenuOperations.GetSelectedBranchesCount(), false);
|
|
|
|
AddBranchMenuItem(
|
|
mCreateBranchMenuItemContent,
|
|
menu,
|
|
operations,
|
|
BranchMenuOperations.CreateBranch,
|
|
CreateBranchMenuItem_Click);
|
|
|
|
AddBranchMenuItem(
|
|
mSwitchToBranchMenuItemContent,
|
|
menu,
|
|
operations,
|
|
BranchMenuOperations.SwitchToBranch,
|
|
SwitchToBranchMenuItem_Click);
|
|
|
|
menu.AddSeparator(string.Empty);
|
|
|
|
AddBranchMenuItem(
|
|
mRenameBranchMenuItemContent,
|
|
menu,
|
|
operations,
|
|
BranchMenuOperations.Rename,
|
|
RenameBranchMenuItem_Click);
|
|
|
|
AddBranchMenuItem(
|
|
mDeleteBranchMenuItemContent,
|
|
menu,
|
|
operations,
|
|
BranchMenuOperations.Delete,
|
|
DeleteBranchMenuItem_Click);
|
|
}
|
|
|
|
static void AddBranchMenuItem(
|
|
GUIContent menuItemContent,
|
|
GenericMenu menu,
|
|
BranchMenuOperations operations,
|
|
BranchMenuOperations operationsToCheck,
|
|
GenericMenu.MenuFunction menuFunction)
|
|
{
|
|
if (operations.HasFlag(operationsToCheck))
|
|
{
|
|
menu.AddItem(
|
|
menuItemContent,
|
|
false,
|
|
menuFunction);
|
|
return;
|
|
}
|
|
|
|
menu.AddDisabledItem(menuItemContent);
|
|
}
|
|
|
|
static void ProcessMenuOperation(
|
|
BranchMenuOperations operationToExecute,
|
|
IBranchMenuOperations branchMenuOperations)
|
|
{
|
|
if (operationToExecute == BranchMenuOperations.Delete)
|
|
{
|
|
branchMenuOperations.DeleteBranch();
|
|
return;
|
|
}
|
|
}
|
|
|
|
static BranchMenuOperations GetMenuOperations(Event e)
|
|
{
|
|
if (Keyboard.IsKeyPressed(e, KeyCode.Delete))
|
|
return BranchMenuOperations.Delete;
|
|
|
|
return BranchMenuOperations.None;
|
|
}
|
|
|
|
void BuildComponents()
|
|
{
|
|
mCreateBranchMenuItemContent = new GUIContent(
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemCreateBranch));
|
|
mSwitchToBranchMenuItemContent = new GUIContent(
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemSwitchToBranch));
|
|
mRenameBranchMenuItemContent = new GUIContent(
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemRenameBranch));
|
|
mDeleteBranchMenuItemContent = new GUIContent(string.Format("{0} {1}",
|
|
PlasticLocalization.GetString(PlasticLocalization.Name.BranchMenuItemDeleteBranch),
|
|
GetPlasticShortcut.ForDelete()));
|
|
}
|
|
|
|
GenericMenu mMenu;
|
|
|
|
GUIContent mCreateBranchMenuItemContent;
|
|
GUIContent mSwitchToBranchMenuItemContent;
|
|
GUIContent mRenameBranchMenuItemContent;
|
|
GUIContent mDeleteBranchMenuItemContent;
|
|
|
|
readonly IBranchMenuOperations mBranchMenuOperations;
|
|
}
|
|
} |