123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- using PlasticGui;
- using Unity.PlasticSCM.Editor.Help;
- using UnityEditor;
- using UnityEngine;
-
- namespace Unity.PlasticSCM.Editor.UI.Tree
- {
- internal static class DrawTreeViewEmptyState
- {
- internal static void For(
- Rect rect,
- string text)
- {
- GUIContent content = new GUIContent(text);
- Vector2 contentSize = GetContentSize(content);
-
- GUI.BeginGroup(rect);
-
- DrawLabel(
- content,
- contentSize,
- (rect.width - contentSize.x) / 2,
- rect.height / 2);
-
- GUI.EndGroup();
- }
-
- internal static void For(
- Rect rect,
- string text,
- Texture2D icon)
- {
- GUIContent content = new GUIContent(text);
- Vector2 contentSize = GetContentSize(content);
-
- GUI.BeginGroup(rect);
-
- DrawLabelWithIcon(
- content,
- contentSize,
- (rect.width - contentSize.x) / 2,
- rect.height / 2,
- icon);
-
- GUI.EndGroup();
- }
-
- internal static void For(
- Rect rect,
- string text,
- Texture2D icon,
- ExternalLink externalLink)
- {
- GUIContent textContent = new GUIContent(text);
- Vector2 textContentSize = GetContentSize(textContent);
-
- GUIContent linkContent = new GUIContent(externalLink.Label);
- Vector2 linkContentSize = GetContentSize(linkContent, EditorStyles.linkLabel);
-
- float textContentOffsetY = (rect.height - (textContentSize.y + linkContentSize.y)) / 2;
- float linkContentOffsetY = textContentOffsetY + textContentSize.y;
-
- GUI.BeginGroup(rect);
-
- DrawLabelWithIcon(
- textContent,
- textContentSize,
- (rect.width - textContentSize.x) / 2,
- textContentOffsetY,
- icon);
-
- DrawLink(
- externalLink,
- linkContent,
- linkContentSize,
- (rect.width - linkContentSize.x) / 2,
- linkContentOffsetY);
-
- GUI.EndGroup();
- }
-
- static void DrawLabel(
- GUIContent content,
- Vector2 contentSize,
- float offsetX,
- float offsetY)
- {
- GUI.Label(
- new Rect(offsetX, offsetY, contentSize.x, contentSize.y),
- content,
- UnityStyles.Tree.StatusLabel);
- }
-
- static void DrawLabelWithIcon(
- GUIContent content,
- Vector2 contentSize,
- float offsetX,
- float offsetY,
- Texture2D icon)
- {
- int iconSize = UnityConstants.TREEVIEW_STATUS_ICON_SIZE;
- int padding = UnityConstants.TREEVIEW_STATUS_CONTENT_PADDING;
-
- float iconOffsetX = offsetX - iconSize + padding;
- float contentOffsetX = offsetX + iconSize - padding;
-
- GUI.DrawTexture(
- new Rect(iconOffsetX, offsetY + padding, iconSize, iconSize),
- icon,
- ScaleMode.ScaleToFit);
-
- DrawLabel(
- content,
- contentSize,
- contentOffsetX,
- offsetY);
- }
-
- static void DrawLink(
- ExternalLink externalLink,
- GUIContent linkContent,
- Vector2 linkContentSize,
- float offsetX,
- float offsetY)
- {
- Rect buttonPosition = new Rect(
- offsetX,
- offsetY,
- linkContentSize.x,
- linkContentSize.y);
-
- EditorGUIUtility.AddCursorRect(buttonPosition, MouseCursor.Link);
-
- if (GUI.Button(buttonPosition, linkContent, EditorStyles.linkLabel))
- {
- Application.OpenURL(externalLink.Url);
- }
- }
-
- static Vector2 GetContentSize(GUIContent content)
- {
- return GetContentSize(content, UnityStyles.Tree.StatusLabel);
- }
-
- static Vector2 GetContentSize(GUIContent content, GUIStyle guiStyle)
- {
- return guiStyle.CalcSize(content);
- }
- }
- }
|