130 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using UnityEditor;
 | |
| using UnityEngine;
 | |
| 
 | |
| using Codice.CM.Common;
 | |
| using PlasticGui;
 | |
| using PlasticGui.WorkspaceWindow;
 | |
| using PlasticGui.WorkspaceWindow.Topbar;
 | |
| using PlasticGui.WorkspaceWindow.Merge;
 | |
| using Unity.PlasticSCM.Editor.StatusBar;
 | |
| using Unity.PlasticSCM.Editor.UI;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.Developer
 | |
| {
 | |
|     internal class ShelvedChangesNotification :
 | |
|         WindowStatusBar.IShelvedChangesNotification,
 | |
|         CheckShelvedChanges.IUpdateShelvedChangesNotification
 | |
|     {
 | |
|         internal ShelvedChangesNotification(
 | |
|             WorkspaceInfo wkInfo,
 | |
|             RepositorySpec repSpec,
 | |
|             ViewSwitcher viewSwitcher,
 | |
|             UVCSWindow uvcsWindow)
 | |
|         {
 | |
|             mWkInfo = wkInfo;
 | |
|             mRepSpec = repSpec;
 | |
|             mViewSwitcher = viewSwitcher;
 | |
|             mUVCSWindow = uvcsWindow;
 | |
|         }
 | |
| 
 | |
|         bool WindowStatusBar.IShelvedChangesNotification.HasNotification
 | |
|         {
 | |
|             get { return mHasNotification; }
 | |
|         }
 | |
| 
 | |
|         void WindowStatusBar.IShelvedChangesNotification.SetWorkspaceWindow(
 | |
|             WorkspaceWindow workspaceWindow)
 | |
|         {
 | |
|             mWorkspaceWindow = workspaceWindow;
 | |
|         }
 | |
| 
 | |
|         void WindowStatusBar.IShelvedChangesNotification.SetShelvedChangesUpdater(
 | |
|             IShelvedChangesUpdater shelvedChangesUpdater)
 | |
|         {
 | |
|             mShelvedChangesUpdater = shelvedChangesUpdater;
 | |
|         }
 | |
| 
 | |
|         void WindowStatusBar.IShelvedChangesNotification.OnGUI()
 | |
|         {
 | |
|             Texture2D icon = Images.GetInfoBellNotificationIcon();
 | |
| 
 | |
|             WindowStatusBar.DrawIcon(icon, UnityConstants.STATUS_BAR_ICON_SIZE - 2);
 | |
| 
 | |
|             WindowStatusBar.DrawNotification(
 | |
|                 new GUIContentNotification(new GUIContent(
 | |
|                     PlasticLocalization.Name.ShelvedChanges.GetString(),
 | |
|                     PlasticLocalization.Name.ShelvedChangesExplanation.GetString())));
 | |
| 
 | |
|             GenericMenu discardShelveDropdownMenu = new GenericMenu();
 | |
|             discardShelveDropdownMenu.AddItem(
 | |
|                 new GUIContent(PlasticLocalization.Name.DiscardShelvedChanges.GetString()),
 | |
|                 false,
 | |
|                 () =>
 | |
|                 {
 | |
|                     ShelvedChangesNotificationPanelOperations.DiscardShelvedChanges(
 | |
|                         mWkInfo,
 | |
|                         mShelveInfo,
 | |
|                         this,
 | |
|                         mShelvedChangesUpdater,
 | |
|                         mViewSwitcher,
 | |
|                         mWorkspaceWindow);
 | |
|                 });
 | |
| 
 | |
|             DrawActionButtonWithMenu.For(
 | |
|                 PlasticLocalization.Name.ViewButton.GetString(),
 | |
|                 PlasticLocalization.Name.ViewShelvedChangesButtonExplanation.GetString(),
 | |
|                 () =>
 | |
|                 {
 | |
|                     if (mShelveInfo == null || mViewSwitcher == null)
 | |
|                         return;
 | |
| 
 | |
|                     ((IMergeViewLauncher)mViewSwitcher).MergeFrom(
 | |
|                         mRepSpec,
 | |
|                         mShelveInfo,
 | |
|                         EnumMergeType.ChangesetCherryPick,
 | |
|                         showDiscardChangesButton: true);
 | |
|                 },
 | |
|                 discardShelveDropdownMenu);
 | |
|         }
 | |
| 
 | |
|         void CheckShelvedChanges.IUpdateShelvedChangesNotification.Hide(
 | |
|             WorkspaceInfo wkInfo)
 | |
|         {
 | |
|             if (!wkInfo.Equals(mWkInfo))
 | |
|                 return;
 | |
| 
 | |
|             mShelveInfo = null;
 | |
| 
 | |
|             mHasNotification = false;
 | |
| 
 | |
|             mUVCSWindow.Repaint();
 | |
|         }
 | |
| 
 | |
|         void CheckShelvedChanges.IUpdateShelvedChangesNotification.Show(
 | |
|             WorkspaceInfo wkInfo,
 | |
|             RepositorySpec repSpec,
 | |
|             ChangesetInfo shelveInfo)
 | |
|         {
 | |
|             if (!wkInfo.Equals(mWkInfo))
 | |
|                 return;
 | |
| 
 | |
|             mShelveInfo = shelveInfo;
 | |
| 
 | |
|             mHasNotification = true;
 | |
| 
 | |
|             mUVCSWindow.Repaint();
 | |
|         }
 | |
| 
 | |
|         bool mHasNotification;
 | |
|         ChangesetInfo mShelveInfo;
 | |
| 
 | |
|         WorkspaceWindow mWorkspaceWindow;
 | |
|         IShelvedChangesUpdater mShelvedChangesUpdater;
 | |
| 
 | |
|         readonly WorkspaceInfo mWkInfo;
 | |
|         readonly RepositorySpec mRepSpec;
 | |
|         readonly ViewSwitcher mViewSwitcher;
 | |
|         readonly UVCSWindow mUVCSWindow;
 | |
|     }
 | |
| }
 |