73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| 
 | |
| using UnityEditor;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.UI
 | |
| {
 | |
|     internal static class DrawActionButtonWithMenu
 | |
|     {
 | |
|         internal static GUIStyle ButtonStyle { get { return mButtonStyle; } }
 | |
| 
 | |
|         internal static void For(
 | |
|             string text,
 | |
|             string tooltip,
 | |
|             Action buttonAction,
 | |
|             GenericMenu actionMenu)
 | |
|         {
 | |
|             float width = MeasureMaxWidth.ForTexts(mButtonStyle, text);
 | |
| 
 | |
|             For(text, tooltip, width, buttonAction, actionMenu);
 | |
|         }
 | |
| 
 | |
|         internal static void For(
 | |
|             string text,
 | |
|             string tooltip,
 | |
|             float width,
 | |
|             Action buttonAction,
 | |
|             GenericMenu actionMenu)
 | |
|         {
 | |
|             // Action button
 | |
|             GUIContent buttonContent = new GUIContent(text, tooltip);
 | |
| 
 | |
|             Rect rt = GUILayoutUtility.GetRect(
 | |
|                 buttonContent,
 | |
|                 mButtonStyle,
 | |
|                 GUILayout.MinWidth(width),
 | |
|                 GUILayout.MaxWidth(width));
 | |
| 
 | |
|             if (GUI.Button(rt, buttonContent, mButtonStyle))
 | |
|             {
 | |
|                 buttonAction();
 | |
|             }
 | |
| 
 | |
|             // Menu dropdown
 | |
|             GUIContent dropDownContent = new GUIContent(
 | |
|                 string.Empty, Images.GetDropDownIcon());
 | |
| 
 | |
|             Rect dropDownRect = GUILayoutUtility.GetRect(
 | |
|                 dropDownContent,
 | |
|                 mDropDownStyle,
 | |
|                 GUILayout.MinWidth(DROPDOWN_BUTTON_WIDTH),
 | |
|                 GUILayout.MaxWidth(DROPDOWN_BUTTON_WIDTH));
 | |
| 
 | |
|             if (EditorGUI.DropdownButton(
 | |
|                     dropDownRect, dropDownContent, FocusType.Passive, mDropDownStyle))
 | |
|             {
 | |
|                 actionMenu.DropDown(dropDownRect);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         static readonly GUIStyle mButtonStyle =
 | |
|             new GUIStyle(EditorStyles.miniButtonLeft)
 | |
|             {
 | |
|                 stretchWidth = false
 | |
|             };
 | |
| 
 | |
|         static readonly GUIStyle mDropDownStyle =
 | |
|             new GUIStyle(EditorStyles.miniButtonRight);
 | |
| 
 | |
|         const int DROPDOWN_BUTTON_WIDTH = 16;
 | |
|     }
 | |
| }
 |