| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using UnityEditor;
- using UnityEngine;
- namespace Unity.PlasticSCM.Editor.UI.Progress
- {
- internal static class DrawProgressForOperations
- {
- internal static void For(
- WorkspaceWindow workspaceWindow,
- OperationProgressData operationProgressData,
- float width)
- {
- EditorGUILayout.BeginVertical(
- EditorStyles.helpBox, GUILayout.Height(60));
- GUILayout.Label(
- operationProgressData.ProgressHeader ?? string.Empty,
- EditorStyles.miniLabel);
- DoProgressBar(
- operationProgressData.TotalProgressMessage,
- (float)operationProgressData.TotalProgressPercent,
- operationProgressData.CanCancelProgress, width);
- if (operationProgressData.CanCancelProgress)
- DoCancelButton(workspaceWindow);
- if (operationProgressData.ShowCurrentBlock)
- {
- GUILayout.Space(6);
- DoProgressBar(
- operationProgressData.CurrentBlockProgressMessage,
- (float)operationProgressData.CurrentBlockProgressPercent,
- operationProgressData.CanCancelProgress, width);
- }
- EditorGUILayout.EndVertical();
- }
- static void DoProgressBar(
- string message,
- float progressPercent,
- bool canCancel,
- float width)
- {
- Rect progressRect = GUILayoutUtility.GetRect(width, 15);
- if (canCancel)
- progressRect.width -= UnityConstants.CANCEL_BUTTON_SIZE + 2;
- EditorGUI.ProgressBar(progressRect, progressPercent, string.Empty);
- progressRect.xMin += 4;
- GUI.Label(progressRect, message, EditorStyles.miniLabel);
- }
- static void DoCancelButton(
- WorkspaceWindow workspaceWindow)
- {
- Rect beginRect = GUILayoutUtility.GetLastRect();
- Rect endRect = GUILayoutUtility.GetLastRect();
- float freeVerticalSpace = endRect.yMax - beginRect.yMin;
- Rect cancelButtonRect = new Rect(
- endRect.xMax - UnityConstants.CANCEL_BUTTON_SIZE + 1,
- beginRect.yMin + (freeVerticalSpace - UnityConstants.CANCEL_BUTTON_SIZE) / 2,
- UnityConstants.CANCEL_BUTTON_SIZE, UnityConstants.CANCEL_BUTTON_SIZE);
- if (!GUI.Button(cancelButtonRect, GUIContent.none, UnityStyles.CancelButton))
- return;
- workspaceWindow.CancelCurrentOperation();
- }
- }
- }
|