Horizon – Rev 21
?pathlinks?
using System;
using System.Drawing;
using System.Windows.Forms;
using Horizon.Database;
using Horizon.Utilities;
namespace Horizon.Snapshots
{
public partial class SnapshotPreviewForm : Form
{
#region Private Methods
private void Relocate()
{
_snapshotManagerForm.InvokeIfRequired(snapshotForm =>
{
var snapshotPreviewLocation = snapshotForm.Location;
Location = new Point(snapshotPreviewLocation.X + snapshotForm.Size.Width,
snapshotPreviewLocation.Y);
});
}
#endregion
#region Private Delegates, Events, Enums, Properties, Indexers and Fields
private readonly SnapshotDatabase _snapshotDatabase;
private readonly SnapshotManagerForm _snapshotManagerForm;
#endregion
#region Constructors, Destructors and Finalizers
public SnapshotPreviewForm()
{
InitializeComponent();
Utilities.WindowState.FormTracker.Track(this);
}
public SnapshotPreviewForm(SnapshotManagerForm snapshotManagerForm, SnapshotDatabase snapshotDatabase) : this()
{
_snapshotManagerForm = snapshotManagerForm;
_snapshotManagerForm.Move += SnapshotManagerFormMove;
_snapshotManagerForm.Resize += SnapshotManagerFormResize;
_snapshotManagerForm.PreviewRetrieved += SnapshotManagerForm_PreviewRetrieved;
;
_snapshotDatabase = snapshotDatabase;
_snapshotDatabase.SnapshotNoteUpdate += SnapshotDatabase_SnapshotNoteUpdate;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
_snapshotDatabase.SnapshotNoteUpdate -= SnapshotDatabase_SnapshotNoteUpdate;
_snapshotManagerForm.PreviewRetrieved -= SnapshotManagerForm_PreviewRetrieved;
_snapshotManagerForm.Move -= SnapshotManagerFormMove;
_snapshotManagerForm.Resize -= SnapshotManagerFormResize;
base.Dispose(disposing);
}
#endregion
#region Event Handlers
private void SnapshotManagerForm_PreviewRetrieved(object sender, PreviewRetrievedEventArgs e)
{
using (var image = pictureBox1.Image)
{
pictureBox1.Image = e.SnapshotPreview.Shot;
richTextBox1.Text = e.SnapshotPreview.Note;
}
if (string.IsNullOrEmpty(e.SnapshotPreview.Note))
{
splitContainer1.Panel2Collapsed = true;
return;
}
splitContainer1.Panel2Collapsed = false;
}
private void SnapshotDatabase_SnapshotNoteUpdate(object sender, SnapshotNoteUpdateEventArgs e)
{
switch (e)
{
case SnapshotNoteUpdateSuccessEventArgs snapshotNoteUpdateSuccessEventArgs:
richTextBox1.InvokeIfRequired(richTextBox =>
{
richTextBox.Text = snapshotNoteUpdateSuccessEventArgs.Note;
});
splitContainer1.InvokeIfRequired(splitContainer =>
{
if (string.IsNullOrEmpty(snapshotNoteUpdateSuccessEventArgs.Note))
{
splitContainer.Panel2Collapsed = true;
return;
}
splitContainer.Panel2Collapsed = false;
});
break;
case SnapshotNoteUpdateFailureEventArgs _:
break;
}
}
private void SnapshotManagerFormResize(object sender, EventArgs e)
{
Relocate();
}
private void SnapshotPreviewForm_Load(object sender, EventArgs e)
{
Relocate();
}
private void SnapshotManagerFormMove(object sender, EventArgs e)
{
Relocate();
}
private void SplitContainer1_Paint(object sender, PaintEventArgs e)
{
var control = (SplitContainer)sender;
// paint the three dots
var points = new Point[3];
var w = control.Width;
var h = control.Height;
var d = control.SplitterDistance;
var sW = control.SplitterWidth;
//calculate the position of the points
if (control.Orientation == Orientation.Horizontal)
{
points[0] = new Point(w / 2, d + sW / 2);
points[1] = new Point(points[0].X - 10, points[0].Y);
points[2] = new Point(points[0].X + 10, points[0].Y);
}
else
{
points[0] = new Point(d + sW / 2, h / 2);
points[1] = new Point(points[0].X, points[0].Y - 10);
points[2] = new Point(points[0].X, points[0].Y + 10);
}
foreach (var p in points)
{
p.Offset(-2, -2);
e.Graphics.FillEllipse(SystemBrushes.ControlDark,
new Rectangle(p, new Size(3, 3)));
p.Offset(1, 1);
e.Graphics.FillEllipse(SystemBrushes.ControlLight,
new Rectangle(p, new Size(3, 3)));
}
}
#endregion
}
}
Generated by GNU Enscript 1.6.5.90.