Skip to content

Commit

Permalink
feat: message details tab
Browse files Browse the repository at this point in the history
  • Loading branch information
SolarianZ committed Nov 5, 2024
1 parent a5038db commit 4e7c44f
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 48 deletions.
Binary file modified Documents~/imgs/img_sample_message_viewer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions Editor/MessageBanner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,9 @@ public void Refresh()

private void SetMessage(Message message)
{
TypeImage.image = message != null ? EditorMessageUtility.GetMessageTypeIcon(message.Type) : null;
ContentLabel.text = message?.Content;
ContentLabel.tooltip = message?.Content;
TypeImage.image = message != null ? EditorMessageUtility.GetMessageTypeIcon(message.type) : null;
ContentLabel.text = message?.content;
ContentLabel.tooltip = message?.content;
}

private void SetMessageCount(MessageType messageType, int count)
Expand Down
42 changes: 37 additions & 5 deletions Editor/MessageDetailsElement.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using UnityEngine.UIElements;
using System;
using UnityEditor.VersionControl;
using UnityEngine.UIElements;

namespace GBG.EditorMessages.Editor
{
Expand All @@ -8,7 +10,8 @@ public class MessageDetailsElement : VisualElement
private readonly MessageDetailsTabElement _messageTab;
private readonly MessageDetailsTabElement _contextTab;
private readonly MessageDetailsTabElement _customDataTab;
private readonly Label _detailsLabel;
private readonly Label _contentLabel;
private Message _message;


public MessageDetailsElement()
Expand Down Expand Up @@ -69,7 +72,7 @@ public MessageDetailsElement()
detailsContainer.Add(detailsScrollView);

// Message Details Label
_detailsLabel = new Label
_contentLabel = new Label
{
enableRichText = true,
selection = { isSelectable = true, },
Expand All @@ -79,33 +82,62 @@ public MessageDetailsElement()
whiteSpace = WhiteSpace.Normal,
}
};
detailsScrollView.Add(_detailsLabel);
detailsScrollView.Add(_contentLabel);

#endregion
}

public void SetMessage(Message message)
{
_detailsLabel.text = message?.Content;
_message = message;

MessageType messageType = message?.type ?? MessageType.Info;
switch (messageType)
{
case MessageType.Info:
_messageTab.Icon.image = EditorMessageUtility.GetInfoIcon();
break;
case MessageType.Warning:
_messageTab.Icon.image = EditorMessageUtility.GetWarningIcon();
break;
case MessageType.Error:
_messageTab.Icon.image = EditorMessageUtility.GetErrorIcon();
break;
default:
throw new ArgumentOutOfRangeException(nameof(messageType), messageType, null);
}

_contextTab.style.display = string.IsNullOrEmpty(message?.context)
? DisplayStyle.None : DisplayStyle.Flex;
_customDataTab.style.display = string.IsNullOrEmpty(message?.customData)
? DisplayStyle.None : DisplayStyle.Flex;

OnClickMessageTab();
}


private void OnClickMessageTab()
{
_contentLabel.text = _message?.content;

_messageTab.style.backgroundColor = EditorMessageUtility.ActiveColor;
_contextTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
_customDataTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
}

private void OnClickContextTab()
{
_contentLabel.text = _message?.context;

_messageTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
_contextTab.style.backgroundColor = EditorMessageUtility.ActiveColor;
_customDataTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
}

private void OnClickCustomDataTab()
{
_contentLabel.text = _message?.customData;

_messageTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
_contextTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
_customDataTab.style.backgroundColor = EditorMessageUtility.ActiveColor;
Expand Down
22 changes: 11 additions & 11 deletions Editor/MessageElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ public void SetMessage(Message message, int lineNumber, int lineNumberLabelWidth
Message = message;
LineNumber = lineNumber;
LineNumberLabelWidth = lineNumberLabelWidth;
TypeImage.image = EditorMessageUtility.GetMessageTypeIcon(message.Type);
ContentLabel.text = message.Content;
TypeImage.image = EditorMessageUtility.GetMessageTypeIcon(message.type);
ContentLabel.text = message.content;

UpdateLineNumberLabel();
UpdateTimestampLabel();
Expand Down Expand Up @@ -169,14 +169,14 @@ private void UpdateTimestampLabel()
return;
}

TimestampLabel.text = new DateTime(Message.Timestamp).ToString(CultureInfo.CurrentCulture);
TimestampLabel.text = new DateTime(Message.timestamp).ToString(CultureInfo.CurrentCulture);
TimestampLabel.style.display = DisplayStyle.Flex;
TimestampSeparatorLabel.style.display = DisplayStyle.Flex;
}

private void UpdateContextImage()
{
if (string.IsNullOrEmpty(Message.Context))
if (string.IsNullOrEmpty(Message.context))
{
ContextImage.style.display = DisplayStyle.None;
return;
Expand All @@ -188,7 +188,7 @@ private void UpdateContextImage()

private void UpdateCustomDataImage()
{
if (string.IsNullOrEmpty(Message.CustomData))
if (string.IsNullOrEmpty(Message.customData))
{
CustomDataImage.style.display = DisplayStyle.None;
return;
Expand All @@ -208,7 +208,7 @@ private void OnClick(ClickEvent evt)
EditorGUIUtility.PingObject(context);
}
}
else if (evt.clickCount == 2 && !string.IsNullOrEmpty(Message?.CustomData))
else if (evt.clickCount == 2 && !string.IsNullOrEmpty(Message?.customData))
{
if (WantsToProcessCustomData != null)
{
Expand All @@ -226,18 +226,18 @@ private void OnContextClick(ContextClickEvent evt)
GenericMenu menu = new GenericMenu();

// Copy Content
menu.AddItem(new GUIContent("Copy Content"), false, () => EditorGUIUtility.systemCopyBuffer = Message.Content);
menu.AddItem(new GUIContent("Copy Content"), false, () => EditorGUIUtility.systemCopyBuffer = Message.content);

// Copy Context
if (!string.IsNullOrEmpty(Message.Context))
if (!string.IsNullOrEmpty(Message.context))
{
menu.AddItem(new GUIContent("Copy Context"), false, () => EditorGUIUtility.systemCopyBuffer = Message.Context);
menu.AddItem(new GUIContent("Copy Context"), false, () => EditorGUIUtility.systemCopyBuffer = Message.context);
}

// Copy Custom Data
if (!string.IsNullOrEmpty(Message.CustomData))
if (!string.IsNullOrEmpty(Message.customData))
{
menu.AddItem(new GUIContent("Copy Custom Data"), false, () => EditorGUIUtility.systemCopyBuffer = Message.CustomData);
menu.AddItem(new GUIContent("Copy Custom Data"), false, () => EditorGUIUtility.systemCopyBuffer = Message.customData);
}

menu.ShowAsContext();
Expand Down
12 changes: 6 additions & 6 deletions Editor/MessageViewer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ private void FilterMessages()

private bool TestMessageType(Message message)
{
switch (message.Type)
switch (message.type)
{
case MessageType.Info:
return _showInfoMessages;
Expand All @@ -448,7 +448,7 @@ private bool TestMessageType(Message message)
return _showErrorMessage;

default:
throw new ArgumentOutOfRangeException(nameof(message.Type), message.Type, null);
throw new ArgumentOutOfRangeException(nameof(message.type), message.type, null);
}

}
Expand All @@ -457,7 +457,7 @@ private bool TestMessageTag(Message message)
{
return string.IsNullOrWhiteSpace(_selectedTag) ||
string.Equals(_selectedTag, TagAll, StringComparison.OrdinalIgnoreCase) ||
string.Equals(_selectedTag, message.Tag, StringComparison.OrdinalIgnoreCase);
string.Equals(_selectedTag, message.tag, StringComparison.OrdinalIgnoreCase);
}

private bool TestMessageSearchPattern(Message message)
Expand All @@ -468,7 +468,7 @@ private bool TestMessageSearchPattern(Message message)
return true;
}

if (string.IsNullOrEmpty(message.Content))
if (string.IsNullOrEmpty(message.content))
{
return false;
}
Expand All @@ -477,7 +477,7 @@ private bool TestMessageSearchPattern(Message message)
{
try
{
return Regex.IsMatch(message.Content, _searchPattern, RegexOptions.IgnoreCase);
return Regex.IsMatch(message.content, _searchPattern, RegexOptions.IgnoreCase);
}
catch (Exception ex)
{
Expand All @@ -487,7 +487,7 @@ private bool TestMessageSearchPattern(Message message)
}
}

return message.Content.Contains(_searchPattern, StringComparison.OrdinalIgnoreCase);
return message.content.Contains(_searchPattern, StringComparison.OrdinalIgnoreCase);
}

private void TryClose()
Expand Down
40 changes: 20 additions & 20 deletions Runtime/Message.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,29 +34,29 @@ public static Message Error(string content, string tag = null, object context =
}


public MessageType Type;
public long Timestamp;
public string Content; // -> Message
public string Tag;
public string Context;
public string CustomData;
public MessageType type;
public long timestamp;
public string content;
public string tag;
public string context;
public string customData;


public Message(MessageType type, long timestamp, string content, string tag, object context, string customData = null)
{
Type = type;
Timestamp = timestamp;
Content = content;
Tag = tag;
CustomData = customData;
this.type = type;
this.timestamp = timestamp;
this.content = content;
this.tag = tag;
this.customData = customData;
InitializeContextFromObject(context);
}

public override string ToString()
{
string text = $"{new DateTime(Timestamp)} {Type} [{Tag}] | {Content}";
string text = $"{new DateTime(timestamp)} {type} [{tag}] | {content}";

if (!string.IsNullOrEmpty(Context))
if (!string.IsNullOrEmpty(context))
{
UObject unityContextObject = GetUnityContextObject();
if (unityContextObject)
Expand All @@ -65,13 +65,13 @@ public override string ToString()
}
else
{
text = $"{text} | {Context}";
text = $"{text} | {context}";
}
}

if (!string.IsNullOrEmpty(CustomData))
if (!string.IsNullOrEmpty(customData))
{
text = $"{text} | {CustomData}";
text = $"{text} | {customData}";
}

return text;
Expand All @@ -98,12 +98,12 @@ private void InitializeContextFromObject(object context)
if (_contextObjectCache)
{
GlobalObjectId globalObjId = GlobalObjectId.GetGlobalObjectIdSlow(_contextObjectCache);
Context = globalObjId.ToString();
this.context = globalObjId.ToString();
return;
}
#endif

Context = context.ToString();
this.context = context.ToString();
}

public UObject GetUnityContextObject()
Expand All @@ -119,7 +119,7 @@ public UObject GetUnityContextObject()
return null;
}

if (!string.IsNullOrWhiteSpace(Context) && GlobalObjectId.TryParse(Context, out GlobalObjectId globalObjectId))
if (!string.IsNullOrWhiteSpace(context) && GlobalObjectId.TryParse(context, out GlobalObjectId globalObjectId))
{
_contextObjectCache = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(globalObjectId);
//_contextIsNotUnityObject = !_contextObjectCache; // 若目标是Scene中的对象且Scene未打开,也会返回null,但这时不能认定目标不是UnityObject
Expand All @@ -140,7 +140,7 @@ public string GetContextDisplayText()
return unityObject.ToString();
}

return Context;
return context;
}

#endregion
Expand Down
6 changes: 3 additions & 3 deletions Runtime/MessageUtility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static bool CountByType(this IEnumerable<Message> messages,

foreach (Message message in messages)
{
switch (message.Type)
switch (message.type)
{
case MessageType.Info:
infoCount++;
Expand All @@ -28,7 +28,7 @@ public static bool CountByType(this IEnumerable<Message> messages,
errorCount++;
break;
default:
throw new ArgumentOutOfRangeException(nameof(message.Type), message.Type, null);
throw new ArgumentOutOfRangeException(nameof(message.type), message.type, null);
}
}

Expand All @@ -45,7 +45,7 @@ public static HashSet<string> CollectTags(this IEnumerable<Message> messages)
HashSet<string> tags = new HashSet<string>();
foreach (Message message in messages)
{
string tag = message.Tag ?? string.Empty;
string tag = message.tag ?? string.Empty;
tags.Add(tag);
}

Expand Down

0 comments on commit 4e7c44f

Please sign in to comment.