55using System . Drawing ;
66using System . Linq ;
77using System . Windows . Forms ;
8+ using Microsoft . SqlServer . MessageBox ;
89using ReClassNET . Logger ;
910using ReClassNET . UI ;
1011
@@ -17,6 +18,8 @@ private class LogItem
1718 public Image Icon { get ; set ; }
1819
1920 public string Message { get ; set ; }
21+
22+ public Exception Exception { get ; set ; }
2023 }
2124
2225 private readonly List < LogItem > items = new List < LogItem > ( ) ;
@@ -43,14 +46,47 @@ protected override void OnFormClosed(FormClosedEventArgs e)
4346 GlobalWindowManager . RemoveWindow ( this ) ;
4447 }
4548
49+ #region Event Handler
50+
51+ private void copyToClipboardButton_Click ( object sender , EventArgs e )
52+ {
53+ Clipboard . SetText ( items . Select ( i => i . Message ) . Aggregate ( ( a , b ) => $ "{ a } { Environment . NewLine } { b } ") ) ;
54+ }
55+
56+ private void closeButton_Click ( object sender , EventArgs e )
57+ {
58+ Close ( ) ;
59+ }
60+
61+ private void entriesDataGridView_CellContentDoubleClick ( object sender , DataGridViewCellEventArgs e )
62+ {
63+ ShowDetailsForm ( ) ;
64+ }
65+
66+ private void showDetailsToolStripMenuItem_Click ( object sender , EventArgs e )
67+ {
68+ ShowDetailsForm ( ) ;
69+ }
70+
71+ #endregion
72+
73+ private void RefreshDataBinding ( )
74+ {
75+ var cm = entriesDataGridView . BindingContext [ items ] as CurrencyManager ;
76+ if ( cm != null )
77+ {
78+ cm . Refresh ( ) ;
79+ }
80+ }
81+
4682 public void Clear ( )
4783 {
4884 items . Clear ( ) ;
4985
5086 RefreshDataBinding ( ) ;
5187 }
5288
53- public void Add ( LogLevel level , string message )
89+ public void Add ( LogLevel level , string message , Exception ex )
5490 {
5591 Contract . Requires ( message != null ) ;
5692
@@ -71,28 +107,26 @@ public void Add(LogLevel level, string message)
71107 break ;
72108 }
73109
74- items . Add ( new LogItem { Icon = icon , Message = message } ) ;
110+ items . Add ( new LogItem { Icon = icon , Message = message , Exception = ex } ) ;
75111
76112 RefreshDataBinding ( ) ;
77113 }
78114
79- private void RefreshDataBinding ( )
115+ private void ShowDetailsForm ( )
80116 {
81- var cm = entriesDataGridView . BindingContext [ items ] as CurrencyManager ;
82- if ( cm != null )
117+ var item = entriesDataGridView . SelectedRows . Cast < DataGridViewRow > ( ) . FirstOrDefault ( ) ? . DataBoundItem as LogItem ;
118+ if ( item != null )
83119 {
84- cm . Refresh ( ) ;
120+ if ( item . Exception != null )
121+ {
122+ item . Exception . HelpLink = "https://github.com/KN4CK3R/ReClass.NET/issues" ;
123+
124+ var msg = new ExceptionMessageBox ( item . Exception ) ;
125+ msg . ShowToolBar = true ;
126+ msg . Symbol = ExceptionMessageBoxSymbol . Error ;
127+ msg . Show ( null ) ;
128+ }
85129 }
86130 }
87-
88- private void copyToClipboardButton_Click ( object sender , EventArgs e )
89- {
90- Clipboard . SetText ( items . Select ( i => i . Message ) . Aggregate ( ( a , b ) => $ "{ a } { Environment . NewLine } { b } ") ) ;
91- }
92-
93- private void closeButton_Click ( object sender , EventArgs e )
94- {
95- Close ( ) ;
96- }
97131 }
98132}
0 commit comments