45
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.ComponentModel;
|
|
4 using System.Drawing;
|
|
5 using System.Data;
|
|
6 using System.Linq;
|
|
7 using System.Text;
|
|
8 using System.Threading.Tasks;
|
|
9 using System.Windows.Forms;
|
|
10
|
|
11 namespace Implab.Diagnostics.Interactive {
|
|
12 public partial class TraceViewControl : UserControl {
|
|
13 int m_maxEvents = 1000;
|
|
14
|
|
15 string m_status = "ready";
|
|
16
|
|
17 readonly LinkedList<TraceViewItem> m_events = new LinkedList<TraceViewItem>();
|
|
18 public TraceViewControl() {
|
|
19 InitializeComponent();
|
|
20
|
|
21 var ticks = Environment.TickCount;
|
|
22
|
|
23 for (int i = 0; i < 1333; i++) {
|
|
24 AddViewItem(new TraceViewItem {
|
|
25 indent = i % 4,
|
|
26 message = String.Format("Auto generated {0}", i),
|
|
27 thread = 2,
|
|
28 timestamp = ticks + i*10
|
|
29 });
|
|
30 }
|
|
31 }
|
|
32
|
|
33 public void AddViewItem(TraceViewItem item) {
|
|
34 m_events.AddLast(item);
|
|
35 if (m_events.Count > m_maxEvents)
|
|
36 m_events.RemoveFirst();
|
|
37 }
|
|
38
|
|
39 protected override void OnPaint(PaintEventArgs e) {
|
|
40 base.OnPaint(e);
|
|
41
|
|
42 if (m_status != null)
|
|
43 e.Graphics.DrawString(m_status, DefaultFont, Brushes.Black, 0, 0);
|
|
44
|
|
45 }
|
|
46
|
|
47 protected override void OnMouseMove(MouseEventArgs e) {
|
|
48 base.OnMouseMove(e);
|
|
49
|
|
50 m_status = String.Format("({0},{1})", e.X, e.Y);
|
|
51 Invalidate();
|
|
52 }
|
|
53
|
|
54 }
|
|
55 }
|