77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| 
 | |
| using UnityEditor;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.UI
 | |
| {
 | |
|     internal static class DrawActionHelpBox
 | |
|     {
 | |
|         internal static void For(
 | |
|             Texture image,
 | |
|             string labelText,
 | |
|             string buttonText,
 | |
|             Action buttonAction)
 | |
|         {
 | |
|             EditorGUILayout.BeginHorizontal(
 | |
|                 EditorStyles.helpBox, GUILayout.MinHeight(40));
 | |
| 
 | |
|             DoNotificationLabel(image, labelText);
 | |
| 
 | |
|             GUILayout.Space(10);
 | |
| 
 | |
|             DoActionButton(buttonText, buttonAction);
 | |
| 
 | |
|             GUILayout.FlexibleSpace();
 | |
| 
 | |
|             EditorGUILayout.EndHorizontal();
 | |
|         }
 | |
| 
 | |
|         static void DoNotificationLabel(
 | |
|             Texture image, string labelText)
 | |
|         {
 | |
|             GUILayout.BeginVertical();
 | |
| 
 | |
|             GUILayout.FlexibleSpace();
 | |
| 
 | |
|             GUILayout.Label(
 | |
|                 new GUIContent(labelText, image),
 | |
|                 UnityStyles.HelpBoxLabel);
 | |
| 
 | |
|             GUILayout.FlexibleSpace();
 | |
| 
 | |
|             GUILayout.EndVertical();
 | |
|         }
 | |
| 
 | |
|         static void DoActionButton(
 | |
|             string buttonText, Action buttonAction)
 | |
|         {
 | |
|             GUILayout.BeginVertical();
 | |
| 
 | |
|             GUILayout.FlexibleSpace();
 | |
| 
 | |
|             GUIContent buttonContent = new GUIContent(buttonText);
 | |
| 
 | |
|             float width = GetButtonWidth(
 | |
|                 buttonContent, EditorStyles.miniButton);
 | |
| 
 | |
|             if (GUILayout.Button(
 | |
|                     buttonContent, EditorStyles.miniButton,
 | |
|                     GUILayout.MinWidth(Math.Max(50, width))))
 | |
|             {
 | |
|                 buttonAction();
 | |
|             }
 | |
| 
 | |
|             GUILayout.FlexibleSpace();
 | |
| 
 | |
|             GUILayout.EndVertical();
 | |
|         }
 | |
| 
 | |
|         static float GetButtonWidth(
 | |
|             GUIContent buttonContent, GUIStyle buttonStyle)
 | |
|         {
 | |
|             return buttonStyle.CalcSize(buttonContent).x + 10;
 | |
|         }
 | |
|     }
 | |
| }
 |