Horizon – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
2 using System.Drawing;
3 using System.Windows.Forms;
4 using Horizon.Database;
5 using Horizon.Utilities;
6  
7 namespace Horizon.Snapshots
8 {
9 public partial class SnapshotPreviewForm : Form
10 {
11 #region Private Methods
12  
13 private void Relocate()
14 {
15 _snapshotManagerForm.InvokeIfRequired(snapshotForm =>
16 {
17 var snapshotPreviewLocation = snapshotForm.Location;
18 Location = new Point(snapshotPreviewLocation.X + snapshotForm.Size.Width,
19 snapshotPreviewLocation.Y);
20 });
21 }
22  
23 #endregion
24  
25 #region Private Delegates, Events, Enums, Properties, Indexers and Fields
26  
27 private readonly SnapshotDatabase _snapshotDatabase;
28  
29 private readonly SnapshotManagerForm _snapshotManagerForm;
30  
31 #endregion
32  
33 #region Constructors, Destructors and Finalizers
34  
35 public SnapshotPreviewForm()
36 {
37 InitializeComponent();
38 Utilities.WindowState.FormTracker.Track(this);
39 }
40  
41 public SnapshotPreviewForm(SnapshotManagerForm snapshotManagerForm, SnapshotDatabase snapshotDatabase) : this()
42 {
43 _snapshotManagerForm = snapshotManagerForm;
44 _snapshotManagerForm.Move += SnapshotManagerFormMove;
45 _snapshotManagerForm.Resize += SnapshotManagerFormResize;
46 _snapshotManagerForm.PreviewRetrieved += SnapshotManagerForm_PreviewRetrieved;
47 ;
48  
49 _snapshotDatabase = snapshotDatabase;
50 _snapshotDatabase.SnapshotNoteUpdate += SnapshotDatabase_SnapshotNoteUpdate;
51 }
52  
53 /// <summary>
54 /// Clean up any resources being used.
55 /// </summary>
56 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
57 protected override void Dispose(bool disposing)
58 {
59 if (disposing && components != null)
60 {
61 components.Dispose();
62 }
63  
64 _snapshotDatabase.SnapshotNoteUpdate -= SnapshotDatabase_SnapshotNoteUpdate;
65 _snapshotManagerForm.PreviewRetrieved -= SnapshotManagerForm_PreviewRetrieved;
66  
67 _snapshotManagerForm.Move -= SnapshotManagerFormMove;
68 _snapshotManagerForm.Resize -= SnapshotManagerFormResize;
69  
70 base.Dispose(disposing);
71 }
72  
73 #endregion
74  
75 #region Event Handlers
76  
77 private void SnapshotManagerForm_PreviewRetrieved(object sender, PreviewRetrievedEventArgs e)
78 {
79 using (var image = pictureBox1.Image)
80 {
81 pictureBox1.Image = e.SnapshotPreview.Shot;
82 richTextBox1.Text = e.SnapshotPreview.Note;
83 }
84  
85 if (string.IsNullOrEmpty(e.SnapshotPreview.Note))
86 {
87 splitContainer1.Panel2Collapsed = true;
88 return;
89 }
90  
91 splitContainer1.Panel2Collapsed = false;
92 }
93  
94 private void SnapshotDatabase_SnapshotNoteUpdate(object sender, SnapshotNoteUpdateEventArgs e)
95 {
96 switch (e)
97 {
98 case SnapshotNoteUpdateSuccessEventArgs snapshotNoteUpdateSuccessEventArgs:
99  
100 richTextBox1.InvokeIfRequired(richTextBox =>
101 {
102 richTextBox.Text = snapshotNoteUpdateSuccessEventArgs.Note;
103 });
104  
105 splitContainer1.InvokeIfRequired(splitContainer =>
106 {
107 if (string.IsNullOrEmpty(snapshotNoteUpdateSuccessEventArgs.Note))
108 {
109 splitContainer.Panel2Collapsed = true;
110 return;
111 }
112  
113 splitContainer.Panel2Collapsed = false;
114 });
115 break;
116 case SnapshotNoteUpdateFailureEventArgs _:
117 break;
118 }
119 }
120  
121 private void SnapshotManagerFormResize(object sender, EventArgs e)
122 {
123 Relocate();
124 }
125  
126 private void SnapshotPreviewForm_Load(object sender, EventArgs e)
127 {
128 Relocate();
129 }
130  
131 private void SnapshotManagerFormMove(object sender, EventArgs e)
132 {
133 Relocate();
134 }
135  
136 private void SplitContainer1_Paint(object sender, PaintEventArgs e)
137 {
138 var control = (SplitContainer)sender;
139 // paint the three dots
140 var points = new Point[3];
141 var w = control.Width;
142 var h = control.Height;
143 var d = control.SplitterDistance;
144 var sW = control.SplitterWidth;
145  
146 //calculate the position of the points
147 if (control.Orientation == Orientation.Horizontal)
148 {
149 points[0] = new Point(w / 2, d + sW / 2);
150 points[1] = new Point(points[0].X - 10, points[0].Y);
151 points[2] = new Point(points[0].X + 10, points[0].Y);
152 }
153 else
154 {
155 points[0] = new Point(d + sW / 2, h / 2);
156 points[1] = new Point(points[0].X, points[0].Y - 10);
157 points[2] = new Point(points[0].X, points[0].Y + 10);
158 }
159  
160 foreach (var p in points)
161 {
162 p.Offset(-2, -2);
163 e.Graphics.FillEllipse(SystemBrushes.ControlDark,
164 new Rectangle(p, new Size(3, 3)));
165  
166 p.Offset(1, 1);
167 e.Graphics.FillEllipse(SystemBrushes.ControlLight,
168 new Rectangle(p, new Size(3, 3)));
169 }
170 }
171  
172 #endregion
173 }
174 }