Skip to content

Commit 4e7c44f

Browse files
committed
feat: message details tab
1 parent a5038db commit 4e7c44f

File tree

7 files changed

+80
-48
lines changed

7 files changed

+80
-48
lines changed
1.78 KB
Loading

Editor/MessageBanner.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ public void Refresh()
190190

191191
private void SetMessage(Message message)
192192
{
193-
TypeImage.image = message != null ? EditorMessageUtility.GetMessageTypeIcon(message.Type) : null;
194-
ContentLabel.text = message?.Content;
195-
ContentLabel.tooltip = message?.Content;
193+
TypeImage.image = message != null ? EditorMessageUtility.GetMessageTypeIcon(message.type) : null;
194+
ContentLabel.text = message?.content;
195+
ContentLabel.tooltip = message?.content;
196196
}
197197

198198
private void SetMessageCount(MessageType messageType, int count)

Editor/MessageDetailsElement.cs

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using UnityEngine.UIElements;
1+
using System;
2+
using UnityEditor.VersionControl;
3+
using UnityEngine.UIElements;
24

35
namespace GBG.EditorMessages.Editor
46
{
@@ -8,7 +10,8 @@ public class MessageDetailsElement : VisualElement
810
private readonly MessageDetailsTabElement _messageTab;
911
private readonly MessageDetailsTabElement _contextTab;
1012
private readonly MessageDetailsTabElement _customDataTab;
11-
private readonly Label _detailsLabel;
13+
private readonly Label _contentLabel;
14+
private Message _message;
1215

1316

1417
public MessageDetailsElement()
@@ -69,7 +72,7 @@ public MessageDetailsElement()
6972
detailsContainer.Add(detailsScrollView);
7073

7174
// Message Details Label
72-
_detailsLabel = new Label
75+
_contentLabel = new Label
7376
{
7477
enableRichText = true,
7578
selection = { isSelectable = true, },
@@ -79,33 +82,62 @@ public MessageDetailsElement()
7982
whiteSpace = WhiteSpace.Normal,
8083
}
8184
};
82-
detailsScrollView.Add(_detailsLabel);
85+
detailsScrollView.Add(_contentLabel);
8386

8487
#endregion
8588
}
8689

8790
public void SetMessage(Message message)
8891
{
89-
_detailsLabel.text = message?.Content;
92+
_message = message;
93+
94+
MessageType messageType = message?.type ?? MessageType.Info;
95+
switch (messageType)
96+
{
97+
case MessageType.Info:
98+
_messageTab.Icon.image = EditorMessageUtility.GetInfoIcon();
99+
break;
100+
case MessageType.Warning:
101+
_messageTab.Icon.image = EditorMessageUtility.GetWarningIcon();
102+
break;
103+
case MessageType.Error:
104+
_messageTab.Icon.image = EditorMessageUtility.GetErrorIcon();
105+
break;
106+
default:
107+
throw new ArgumentOutOfRangeException(nameof(messageType), messageType, null);
108+
}
109+
110+
_contextTab.style.display = string.IsNullOrEmpty(message?.context)
111+
? DisplayStyle.None : DisplayStyle.Flex;
112+
_customDataTab.style.display = string.IsNullOrEmpty(message?.customData)
113+
? DisplayStyle.None : DisplayStyle.Flex;
114+
115+
OnClickMessageTab();
90116
}
91117

92118

93119
private void OnClickMessageTab()
94120
{
121+
_contentLabel.text = _message?.content;
122+
95123
_messageTab.style.backgroundColor = EditorMessageUtility.ActiveColor;
96124
_contextTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
97125
_customDataTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
98126
}
99127

100128
private void OnClickContextTab()
101129
{
130+
_contentLabel.text = _message?.context;
131+
102132
_messageTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
103133
_contextTab.style.backgroundColor = EditorMessageUtility.ActiveColor;
104134
_customDataTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
105135
}
106136

107137
private void OnClickCustomDataTab()
108138
{
139+
_contentLabel.text = _message?.customData;
140+
109141
_messageTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
110142
_contextTab.style.backgroundColor = EditorMessageUtility.InactiveColor;
111143
_customDataTab.style.backgroundColor = EditorMessageUtility.ActiveColor;

Editor/MessageElement.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ public void SetMessage(Message message, int lineNumber, int lineNumberLabelWidth
138138
Message = message;
139139
LineNumber = lineNumber;
140140
LineNumberLabelWidth = lineNumberLabelWidth;
141-
TypeImage.image = EditorMessageUtility.GetMessageTypeIcon(message.Type);
142-
ContentLabel.text = message.Content;
141+
TypeImage.image = EditorMessageUtility.GetMessageTypeIcon(message.type);
142+
ContentLabel.text = message.content;
143143

144144
UpdateLineNumberLabel();
145145
UpdateTimestampLabel();
@@ -169,14 +169,14 @@ private void UpdateTimestampLabel()
169169
return;
170170
}
171171

172-
TimestampLabel.text = new DateTime(Message.Timestamp).ToString(CultureInfo.CurrentCulture);
172+
TimestampLabel.text = new DateTime(Message.timestamp).ToString(CultureInfo.CurrentCulture);
173173
TimestampLabel.style.display = DisplayStyle.Flex;
174174
TimestampSeparatorLabel.style.display = DisplayStyle.Flex;
175175
}
176176

177177
private void UpdateContextImage()
178178
{
179-
if (string.IsNullOrEmpty(Message.Context))
179+
if (string.IsNullOrEmpty(Message.context))
180180
{
181181
ContextImage.style.display = DisplayStyle.None;
182182
return;
@@ -188,7 +188,7 @@ private void UpdateContextImage()
188188

189189
private void UpdateCustomDataImage()
190190
{
191-
if (string.IsNullOrEmpty(Message.CustomData))
191+
if (string.IsNullOrEmpty(Message.customData))
192192
{
193193
CustomDataImage.style.display = DisplayStyle.None;
194194
return;
@@ -208,7 +208,7 @@ private void OnClick(ClickEvent evt)
208208
EditorGUIUtility.PingObject(context);
209209
}
210210
}
211-
else if (evt.clickCount == 2 && !string.IsNullOrEmpty(Message?.CustomData))
211+
else if (evt.clickCount == 2 && !string.IsNullOrEmpty(Message?.customData))
212212
{
213213
if (WantsToProcessCustomData != null)
214214
{
@@ -226,18 +226,18 @@ private void OnContextClick(ContextClickEvent evt)
226226
GenericMenu menu = new GenericMenu();
227227

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

231231
// Copy Context
232-
if (!string.IsNullOrEmpty(Message.Context))
232+
if (!string.IsNullOrEmpty(Message.context))
233233
{
234-
menu.AddItem(new GUIContent("Copy Context"), false, () => EditorGUIUtility.systemCopyBuffer = Message.Context);
234+
menu.AddItem(new GUIContent("Copy Context"), false, () => EditorGUIUtility.systemCopyBuffer = Message.context);
235235
}
236236

237237
// Copy Custom Data
238-
if (!string.IsNullOrEmpty(Message.CustomData))
238+
if (!string.IsNullOrEmpty(Message.customData))
239239
{
240-
menu.AddItem(new GUIContent("Copy Custom Data"), false, () => EditorGUIUtility.systemCopyBuffer = Message.CustomData);
240+
menu.AddItem(new GUIContent("Copy Custom Data"), false, () => EditorGUIUtility.systemCopyBuffer = Message.customData);
241241
}
242242

243243
menu.ShowAsContext();

Editor/MessageViewer.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ private void FilterMessages()
436436

437437
private bool TestMessageType(Message message)
438438
{
439-
switch (message.Type)
439+
switch (message.type)
440440
{
441441
case MessageType.Info:
442442
return _showInfoMessages;
@@ -448,7 +448,7 @@ private bool TestMessageType(Message message)
448448
return _showErrorMessage;
449449

450450
default:
451-
throw new ArgumentOutOfRangeException(nameof(message.Type), message.Type, null);
451+
throw new ArgumentOutOfRangeException(nameof(message.type), message.type, null);
452452
}
453453

454454
}
@@ -457,7 +457,7 @@ private bool TestMessageTag(Message message)
457457
{
458458
return string.IsNullOrWhiteSpace(_selectedTag) ||
459459
string.Equals(_selectedTag, TagAll, StringComparison.OrdinalIgnoreCase) ||
460-
string.Equals(_selectedTag, message.Tag, StringComparison.OrdinalIgnoreCase);
460+
string.Equals(_selectedTag, message.tag, StringComparison.OrdinalIgnoreCase);
461461
}
462462

463463
private bool TestMessageSearchPattern(Message message)
@@ -468,7 +468,7 @@ private bool TestMessageSearchPattern(Message message)
468468
return true;
469469
}
470470

471-
if (string.IsNullOrEmpty(message.Content))
471+
if (string.IsNullOrEmpty(message.content))
472472
{
473473
return false;
474474
}
@@ -477,7 +477,7 @@ private bool TestMessageSearchPattern(Message message)
477477
{
478478
try
479479
{
480-
return Regex.IsMatch(message.Content, _searchPattern, RegexOptions.IgnoreCase);
480+
return Regex.IsMatch(message.content, _searchPattern, RegexOptions.IgnoreCase);
481481
}
482482
catch (Exception ex)
483483
{
@@ -487,7 +487,7 @@ private bool TestMessageSearchPattern(Message message)
487487
}
488488
}
489489

490-
return message.Content.Contains(_searchPattern, StringComparison.OrdinalIgnoreCase);
490+
return message.content.Contains(_searchPattern, StringComparison.OrdinalIgnoreCase);
491491
}
492492

493493
private void TryClose()

Runtime/Message.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,29 @@ public static Message Error(string content, string tag = null, object context =
3434
}
3535

3636

37-
public MessageType Type;
38-
public long Timestamp;
39-
public string Content; // -> Message
40-
public string Tag;
41-
public string Context;
42-
public string CustomData;
37+
public MessageType type;
38+
public long timestamp;
39+
public string content;
40+
public string tag;
41+
public string context;
42+
public string customData;
4343

4444

4545
public Message(MessageType type, long timestamp, string content, string tag, object context, string customData = null)
4646
{
47-
Type = type;
48-
Timestamp = timestamp;
49-
Content = content;
50-
Tag = tag;
51-
CustomData = customData;
47+
this.type = type;
48+
this.timestamp = timestamp;
49+
this.content = content;
50+
this.tag = tag;
51+
this.customData = customData;
5252
InitializeContextFromObject(context);
5353
}
5454

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

59-
if (!string.IsNullOrEmpty(Context))
59+
if (!string.IsNullOrEmpty(context))
6060
{
6161
UObject unityContextObject = GetUnityContextObject();
6262
if (unityContextObject)
@@ -65,13 +65,13 @@ public override string ToString()
6565
}
6666
else
6767
{
68-
text = $"{text} | {Context}";
68+
text = $"{text} | {context}";
6969
}
7070
}
7171

72-
if (!string.IsNullOrEmpty(CustomData))
72+
if (!string.IsNullOrEmpty(customData))
7373
{
74-
text = $"{text} | {CustomData}";
74+
text = $"{text} | {customData}";
7575
}
7676

7777
return text;
@@ -98,12 +98,12 @@ private void InitializeContextFromObject(object context)
9898
if (_contextObjectCache)
9999
{
100100
GlobalObjectId globalObjId = GlobalObjectId.GetGlobalObjectIdSlow(_contextObjectCache);
101-
Context = globalObjId.ToString();
101+
this.context = globalObjId.ToString();
102102
return;
103103
}
104104
#endif
105105

106-
Context = context.ToString();
106+
this.context = context.ToString();
107107
}
108108

109109
public UObject GetUnityContextObject()
@@ -119,7 +119,7 @@ public UObject GetUnityContextObject()
119119
return null;
120120
}
121121

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

143-
return Context;
143+
return context;
144144
}
145145

146146
#endregion

Runtime/MessageUtility.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static bool CountByType(this IEnumerable<Message> messages,
1616

1717
foreach (Message message in messages)
1818
{
19-
switch (message.Type)
19+
switch (message.type)
2020
{
2121
case MessageType.Info:
2222
infoCount++;
@@ -28,7 +28,7 @@ public static bool CountByType(this IEnumerable<Message> messages,
2828
errorCount++;
2929
break;
3030
default:
31-
throw new ArgumentOutOfRangeException(nameof(message.Type), message.Type, null);
31+
throw new ArgumentOutOfRangeException(nameof(message.type), message.type, null);
3232
}
3333
}
3434

@@ -45,7 +45,7 @@ public static HashSet<string> CollectTags(this IEnumerable<Message> messages)
4545
HashSet<string> tags = new HashSet<string>();
4646
foreach (Message message in messages)
4747
{
48-
string tag = message.Tag ?? string.Empty;
48+
string tag = message.tag ?? string.Empty;
4949
tags.Add(tag);
5050
}
5151

0 commit comments

Comments
 (0)