A game about forced loneliness, made by TACStudios
at master 124 lines 3.8 kB view raw
1using UnityEngine; 2using Codice.CM.Common; 3using PlasticGui.WorkspaceWindow; 4using PlasticGui; 5using Unity.PlasticSCM.Editor.UI.StatusBar; 6using PlasticGui.WorkspaceWindow.PendingChanges; 7using Unity.PlasticSCM.Editor.UI; 8 9namespace Unity.PlasticSCM.Editor.Developer 10{ 11 internal class IncomingChangesNotification : 12 StatusBar.IIncomingChangesNotification, 13 CheckIncomingChanges.IUpdateIncomingChanges 14 { 15 internal IncomingChangesNotification( 16 WorkspaceInfo wkInfo, 17 IMergeViewLauncher mergeViewLauncher, 18 PlasticWindow plasticWindow) 19 { 20 mWkInfo = wkInfo; 21 mMergeViewLauncher = mergeViewLauncher; 22 mPlasticWindow = plasticWindow; 23 } 24 25 internal void SetWorkspaceWindow(WorkspaceWindow workspaceWindow) 26 { 27 mWorkspaceWindow = workspaceWindow; 28 } 29 30 bool StatusBar.IIncomingChangesNotification.HasNotification 31 { 32 get { return mHasNotification; } 33 } 34 35 void StatusBar.IIncomingChangesNotification.OnGUI() 36 { 37 Texture2D icon = mData.Status == PlasticNotification.Status.Conflicts ? 38 Images.GetConflictedIcon() : 39 Images.GetOutOfSyncIcon(); 40 41 StatusBar.DrawIcon(icon); 42 43 StatusBar.DrawNotification(new GUIContentNotification( 44 new GUIContent(mData.InfoText))); 45 46 if (StatusBar.DrawButton(new GUIContent(mData.ActionText, mData.TooltipText))) 47 { 48 if (mData.HasUpdateAction) 49 { 50 mWorkspaceWindow.UpdateWorkspace(); 51 return; 52 } 53 54 ShowIncomingChanges.FromNotificationBar(mWkInfo, mMergeViewLauncher); 55 } 56 } 57 58 void CheckIncomingChanges.IUpdateIncomingChanges.Hide(WorkspaceInfo wkInfo) 59 { 60 if (!wkInfo.Equals(mWkInfo)) 61 return; 62 63 PlasticPlugin.SetNotificationStatus( 64 mPlasticWindow, 65 PlasticNotification.Status.None); 66 67 mData.Clear(); 68 69 mHasNotification = false; 70 71 mPlasticWindow.Repaint(); 72 } 73 74 void CheckIncomingChanges.IUpdateIncomingChanges.Show( 75 WorkspaceInfo wkInfo, 76 string infoText, 77 string actionText, 78 string tooltipText, 79 CheckIncomingChanges.Severity severity, 80 CheckIncomingChanges.Action action) 81 { 82 if (!wkInfo.Equals(mWkInfo)) 83 return; 84 85 PlasticNotification.Status status = GetStatusFromSeverity(severity); 86 87 mData.UpdateData( 88 infoText, 89 actionText, 90 tooltipText, 91 action == CheckIncomingChanges.Action.Update, 92 status); 93 94 mHasNotification = true; 95 96 PlasticPlugin.SetNotificationStatus( 97 mPlasticWindow, 98 status); 99 100 mPlasticWindow.Repaint(); 101 } 102 103 static PlasticNotification.Status GetStatusFromSeverity( 104 CheckIncomingChanges.Severity severity) 105 { 106 if (severity == CheckIncomingChanges.Severity.Info) 107 return PlasticNotification.Status.IncomingChanges; 108 109 if (severity == CheckIncomingChanges.Severity.Warning) 110 return PlasticNotification.Status.Conflicts; 111 112 return PlasticNotification.Status.None; 113 } 114 115 bool mHasNotification; 116 StatusBar.IncomingChangesNotificationData mData = 117 new StatusBar.IncomingChangesNotificationData(); 118 WorkspaceWindow mWorkspaceWindow; 119 120 readonly WorkspaceInfo mWkInfo; 121 readonly IMergeViewLauncher mMergeViewLauncher; 122 readonly PlasticWindow mPlasticWindow; 123 } 124}