124 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Codice.Client.BaseCommands;
 | |
| using Codice.Client.Commands.CheckIn;
 | |
| using Codice.Client.Common;
 | |
| using Codice.CM.Common;
 | |
| using PlasticGui;
 | |
| using PlasticGui.WorkspaceWindow;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.Developer
 | |
| {
 | |
|     internal class ProgressOperationHandler : IProgressOperationHandler
 | |
|     {
 | |
|         internal ProgressOperationHandler(WorkspaceInfo wkInfo, WorkspaceWindow workspaceWindow)
 | |
|         {
 | |
|             mWkInfo = wkInfo;
 | |
|             mWorkspaceWindow = workspaceWindow;
 | |
|         }
 | |
| 
 | |
|         bool IProgressOperationHandler.CheckOperationInProgress()
 | |
|         {
 | |
|             if (IsOperationInProgress())
 | |
|             {
 | |
|                 GuiMessage.ShowInformation(
 | |
|                     PlasticLocalization.GetString(PlasticLocalization.Name.OperationRunning),
 | |
|                     PlasticLocalization.GetString(PlasticLocalization.Name.OperationInProgress));
 | |
|                 return true;
 | |
|             }
 | |
| 
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         internal void Update(double elapsedSeconds)
 | |
|         {
 | |
|             if (mUpdateProgress == null)
 | |
|                 return;
 | |
| 
 | |
|             mSecondsSinceLastProgressUpdate += elapsedSeconds;
 | |
|             if (mSecondsSinceLastProgressUpdate > UPDATE_INTERVAL_SECONDS)
 | |
|             {
 | |
|                 mUpdateProgress.OnUpdateProgress();
 | |
|                 mSecondsSinceLastProgressUpdate -= UPDATE_INTERVAL_SECONDS;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal bool IsOperationInProgress()
 | |
|         {
 | |
|             return mProgress != null
 | |
|                 || mUpdateProgress != null
 | |
|                 || mCheckinProgress != null;
 | |
|         }
 | |
| 
 | |
|         internal void ShowProgress()
 | |
|         {
 | |
|             mProgress = new GenericProgress(mWorkspaceWindow);
 | |
|         }
 | |
| 
 | |
|         internal void RefreshProgress(ProgressData progressData)
 | |
|         {
 | |
|             mProgress.RefreshProgress(progressData);
 | |
|         }
 | |
| 
 | |
|         internal void EndProgress()
 | |
|         {
 | |
|             mProgress = null;
 | |
|             mWorkspaceWindow.Progress.ResetProgress();
 | |
|             mWorkspaceWindow.RequestRepaint();
 | |
|         }
 | |
| 
 | |
|         internal void ShowUpdateProgress(string title, UpdateNotifier notifier)
 | |
|         {
 | |
|             mUpdateProgress = new UpdateProgress(
 | |
|                 notifier, mWkInfo.ClientPath, title, mWorkspaceWindow);
 | |
|             mUpdateProgress.OnUpdateProgress();
 | |
|             mSecondsSinceLastProgressUpdate = 0;
 | |
|         }
 | |
| 
 | |
|         internal void ShowCheckinProgress()
 | |
|         {
 | |
|             mCheckinProgress = new CheckinProgress(mWkInfo, mWorkspaceWindow);
 | |
|         }
 | |
| 
 | |
|         internal void RefreshCheckinProgress(
 | |
|             CheckinStatus checkinStatus,
 | |
|             BuildProgressSpeedAndRemainingTime.ProgressData progressData)
 | |
|         {
 | |
|             mCheckinProgress.Refresh(checkinStatus, progressData);
 | |
|         }
 | |
| 
 | |
|         internal void CancelCheckinProgress()
 | |
|         {
 | |
|             mCheckinProgress.CancelPressed = true;
 | |
|         }
 | |
| 
 | |
|         internal void EndUpdateProgress()
 | |
|         {
 | |
|             mUpdateProgress = null;
 | |
|             mWorkspaceWindow.Progress.ResetProgress();
 | |
|             mWorkspaceWindow.RequestRepaint();
 | |
|         }
 | |
| 
 | |
|         internal void EndCheckinProgress()
 | |
|         {
 | |
|             mCheckinProgress = null;
 | |
|             mWorkspaceWindow.Progress.ResetProgress();
 | |
|             mWorkspaceWindow.RequestRepaint();
 | |
|         }
 | |
| 
 | |
|         internal bool HasCheckinCancelled()
 | |
|         {
 | |
|             return mCheckinProgress.CancelPressed;
 | |
|         }
 | |
| 
 | |
|         double mSecondsSinceLastProgressUpdate = 0;
 | |
| 
 | |
|         GenericProgress mProgress;
 | |
|         UpdateProgress mUpdateProgress;
 | |
|         CheckinProgress mCheckinProgress;
 | |
|         WorkspaceInfo mWkInfo;
 | |
| 
 | |
|         WorkspaceWindow mWorkspaceWindow;
 | |
| 
 | |
|         const double UPDATE_INTERVAL_SECONDS = 0.5;
 | |
|     }
 | |
| }
 |