A game about forced loneliness, made by TACStudios
1using UnityEditor; 2using UnityEngine; 3 4using PlasticGui; 5using PlasticGui.WorkspaceWindow.Locks; 6using Unity.PlasticSCM.Editor.UI; 7 8namespace Unity.PlasticSCM.Editor.Views.Locks 9{ 10 internal class LocksViewMenu 11 { 12 internal GenericMenu Menu { get { return mMenu; } } 13 14 internal LocksViewMenu( 15 ILockMenuOperations lockMenuOperations) 16 { 17 mLockMenuOperations = lockMenuOperations; 18 19 BuildComponents(); 20 } 21 22 internal void Popup() 23 { 24 mMenu = new GenericMenu(); 25 26 UpdateMenuItems(mMenu); 27 28 mMenu.ShowAsContext(); 29 } 30 31 internal bool ProcessKeyActionIfNeeded(Event e) 32 { 33 LockMenuOperations operationToExecute = GetMenuOperations(e); 34 35 if (operationToExecute == LockMenuOperations.None) 36 return false; 37 38 LockMenuOperations operations = LockMenuUpdater.GetAvailableMenuOperations( 39 mLockMenuOperations.GetSelectedLocksStatus()); 40 41 if (!operations.HasFlag(operationToExecute)) 42 return false; 43 44 ProcessMenuOperation(operationToExecute, mLockMenuOperations); 45 return true; 46 } 47 48 void UpdateMenuItems(GenericMenu menu) 49 { 50 LockMenuOperations operations = LockMenuUpdater.GetAvailableMenuOperations( 51 mLockMenuOperations.GetSelectedLocksStatus()); 52 53 if (operations == LockMenuOperations.None) 54 { 55 menu.AddDisabledItem(GetNoActionMenuItemContent(), false); 56 return; 57 } 58 59 AddLockMenuItem( 60 mReleaseLockMenuItemContent, 61 menu, 62 operations, 63 LockMenuOperations.Release, 64 mLockMenuOperations.ReleaseLocks); 65 66 AddLockMenuItem( 67 mRemoveLockMenuItemContent, 68 menu, 69 operations, 70 LockMenuOperations.Remove, 71 mLockMenuOperations.RemoveLocks); 72 } 73 74 static void AddLockMenuItem( 75 GUIContent menuItemContent, 76 GenericMenu menu, 77 LockMenuOperations operations, 78 LockMenuOperations operationsToCheck, 79 GenericMenu.MenuFunction menuFunction) 80 { 81 if (operations.HasFlag(operationsToCheck)) 82 { 83 menu.AddItem( 84 menuItemContent, 85 false, 86 menuFunction); 87 return; 88 } 89 90 menu.AddDisabledItem(menuItemContent); 91 } 92 93 static void ProcessMenuOperation( 94 LockMenuOperations operationToExecute, 95 ILockMenuOperations lockMenuOperations) 96 { 97 if (operationToExecute == LockMenuOperations.Remove) 98 { 99 lockMenuOperations.RemoveLocks(); 100 return; 101 } 102 } 103 104 static LockMenuOperations GetMenuOperations(Event e) 105 { 106 if (Keyboard.IsKeyPressed(e, KeyCode.Delete)) 107 return LockMenuOperations.Remove; 108 109 return LockMenuOperations.None; 110 } 111 112 GUIContent GetNoActionMenuItemContent() 113 { 114 if (mNoActionMenuItemContent == null) 115 { 116 mNoActionMenuItemContent = new GUIContent( 117 PlasticLocalization.Name.NoActionMenuItem.GetString()); 118 } 119 120 return mNoActionMenuItemContent; 121 } 122 123 void BuildComponents() 124 { 125 mReleaseLockMenuItemContent = new GUIContent(PlasticLocalization. 126 Name.LockMenuItemReleaseLock.GetString()); 127 mRemoveLockMenuItemContent = new GUIContent(string.Format("{0} {1}", 128 PlasticLocalization.Name.LockMenuItemRemoveLock.GetString(), 129 GetPlasticShortcut.ForDelete())); 130 } 131 132 GenericMenu mMenu; 133 134 GUIContent mNoActionMenuItemContent; 135 GUIContent mReleaseLockMenuItemContent; 136 GUIContent mRemoveLockMenuItemContent; 137 138 readonly ILockMenuOperations mLockMenuOperations; 139 } 140}