| 1 | using System; |
|---|
| 2 | using System.Collections.Generic; |
|---|
| 3 | using System.ComponentModel; |
|---|
| 4 | using System.Data; |
|---|
| 5 | using System.Drawing; |
|---|
| 6 | using System.Text; |
|---|
| 7 | using System.Windows.Forms; |
|---|
| 8 | |
|---|
| 9 | using Eraser.Manager; |
|---|
| 10 | using System.Globalization; |
|---|
| 11 | |
|---|
| 12 | namespace Eraser |
|---|
| 13 | { |
|---|
| 14 | public partial class LogForm : Form |
|---|
| 15 | { |
|---|
| 16 | public LogForm(Task task) |
|---|
| 17 | { |
|---|
| 18 | InitializeComponent(); |
|---|
| 19 | this.task = task; |
|---|
| 20 | |
|---|
| 21 | //Update the title |
|---|
| 22 | Text = string.Format("{0} - {1}", Text, task.UIText); |
|---|
| 23 | |
|---|
| 24 | //Add all the existing log messages |
|---|
| 25 | Dictionary<DateTime, List<LogEntry>> log = task.Log.Entries; |
|---|
| 26 | Dictionary<DateTime, List<LogEntry>>.Enumerator iter = log.GetEnumerator(); |
|---|
| 27 | foreach (DateTime sessionTime in log.Keys) |
|---|
| 28 | { |
|---|
| 29 | this.log.Groups.Add(new ListViewGroup("Session: " + sessionTime.ToString(DATEPATTERN))); |
|---|
| 30 | foreach (LogEntry entry in log[sessionTime]) |
|---|
| 31 | task_Logged(entry); |
|---|
| 32 | } |
|---|
| 33 | |
|---|
| 34 | //Register our event handler to get live log messages |
|---|
| 35 | task.Log.OnLogged += new Logger.LogEvent(task_Logged); |
|---|
| 36 | } |
|---|
| 37 | |
|---|
| 38 | ~LogForm() |
|---|
| 39 | { |
|---|
| 40 | task.Log.OnLogged -= new Logger.LogEvent(task_Logged); |
|---|
| 41 | } |
|---|
| 42 | |
|---|
| 43 | private void task_Logged(LogEntry e) |
|---|
| 44 | { |
|---|
| 45 | ListViewItem item = log.Items.Add(e.Timestamp.ToString(DATEPATTERN)); |
|---|
| 46 | item.SubItems.Add(e.Level.ToString()); |
|---|
| 47 | item.SubItems.Add(e.Message); |
|---|
| 48 | if (log.Groups.Count != 0) |
|---|
| 49 | item.Group = log.Groups[log.Groups.Count - 1]; |
|---|
| 50 | |
|---|
| 51 | switch (e.Level) |
|---|
| 52 | { |
|---|
| 53 | case LogLevel.FATAL: |
|---|
| 54 | case LogLevel.ERROR: |
|---|
| 55 | item.ForeColor = Color.Red; |
|---|
| 56 | break; |
|---|
| 57 | case LogLevel.WARNING: |
|---|
| 58 | item.ForeColor = Color.OrangeRed; |
|---|
| 59 | break; |
|---|
| 60 | } |
|---|
| 61 | } |
|---|
| 62 | |
|---|
| 63 | private void clear_Click(object sender, EventArgs e) |
|---|
| 64 | { |
|---|
| 65 | this.task.Log.Clear(); |
|---|
| 66 | log.Items.Clear(); |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | private void close_Click(object sender, EventArgs e) |
|---|
| 70 | { |
|---|
| 71 | Close(); |
|---|
| 72 | } |
|---|
| 73 | |
|---|
| 74 | private Task task; |
|---|
| 75 | private static string DATEPATTERN = |
|---|
| 76 | DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " " + |
|---|
| 77 | DateTimeFormatInfo.CurrentInfo.ShortTimePattern; |
|---|
| 78 | } |
|---|
| 79 | } |
|---|