Horizon – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
2 using System.Windows.Forms;
3 using Be.Windows.Forms;
4 using Horizon.Database;
5 using Horizon.Utilities;
6  
7 namespace Horizon.Snapshots
8 {
9 public partial class HexViewForm : Form
10 {
11 #region Public Events & Delegates
12  
13 public event EventHandler<SaveDataEventArgs> SaveData;
14  
15 #endregion
16  
17 #region Public Methods
18  
19 public void UpdateData(byte[] data)
20 {
21 hexBox1.InvokeIfRequired(hexBox =>
22 {
23 _originalData = (byte[])data.Clone();
24  
25 _dynamicByteProvider = new DynamicByteProvider(data);
26 hexBox.ByteProvider = _dynamicByteProvider;
27 hexBox.Refresh();
28 });
29 }
30  
31 #endregion
32  
33 #region Private Delegates, Events, Enums, Properties, Indexers and Fields
34  
35 private readonly SnapshotDatabase _snapshotDatabase;
36  
37 private DynamicByteProvider _dynamicByteProvider;
38  
39 private string _hash;
40  
41 private byte[] _originalData;
42  
43 #endregion
44  
45 #region Constructors, Destructors and Finalizers
46  
47 public HexViewForm()
48 {
49 InitializeComponent();
50 Utilities.WindowState.FormTracker.Track(this);
51 }
52  
53 public HexViewForm(SnapshotDatabase snapshotDatabase, string hash, byte[] data) : this()
54 {
55 _originalData = (byte[])data.Clone();
56 _hash = hash;
57  
58 _snapshotDatabase = snapshotDatabase;
59 _snapshotDatabase.SnapshotDataUpdate += SnapshotDatabaseSnapshotDataUpdate;
60  
61 _dynamicByteProvider = new DynamicByteProvider(data);
62 hexBox1.ByteProvider = _dynamicByteProvider;
63 }
64  
65 /// <summary>
66 /// Clean up any resources being used.
67 /// </summary>
68 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
69 protected override void Dispose(bool disposing)
70 {
71 if (disposing && components != null)
72 {
73 components.Dispose();
74 }
75  
76 _snapshotDatabase.SnapshotDataUpdate -= SnapshotDatabaseSnapshotDataUpdate;
77  
78 base.Dispose(disposing);
79 }
80  
81 #endregion
82  
83 #region Event Handlers
84  
85 private void SnapshotDatabaseSnapshotDataUpdate(object sender, SnapshotDataUpdateEventArgs e)
86 {
87 switch (e)
88 {
89 case SnapshotDataUpdateSuccessEventArgs snapshotDataUpdateSuccessEventArgs:
90 _hash = snapshotDataUpdateSuccessEventArgs.NewHash;
91  
92 statusStrip1.InvokeIfRequired(statusStrip =>
93 {
94 toolStripProgressBar1.Value = toolStripProgressBar1.Maximum;
95 toolStripStatusLabel1.Text = "Data saved.";
96 });
97 break;
98 case SnapshotDataUpdateFailureEventArgs _:
99 statusStrip1.InvokeIfRequired(statusStrip =>
100 {
101 toolStripProgressBar1.Value = toolStripProgressBar1.Minimum;
102 toolStripStatusLabel1.Text = "Could not save data.";
103 });
104 break;
105 }
106 }
107  
108 private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
109 {
110 if (_dynamicByteProvider.HasChanges())
111 {
112 _dynamicByteProvider.ApplyChanges();
113  
114 statusStrip1.InvokeIfRequired(statusStrip =>
115 {
116 toolStripProgressBar1.Value = toolStripProgressBar1.Minimum;
117 toolStripStatusLabel1.Text = "Saving.";
118 });
119  
120 SaveData?.Invoke(this, new SaveDataEventArgs(_hash, _dynamicByteProvider.Bytes.ToArray()));
121 }
122 }
123  
124 private void ReloadToolStripMenuItem_Click(object sender, EventArgs e)
125 {
126 hexBox1.InvokeIfRequired(hexBox =>
127 {
128 _dynamicByteProvider = new DynamicByteProvider(_originalData);
129 hexBox.ByteProvider = _dynamicByteProvider;
130 hexBox.Refresh();
131 });
132 }
133  
134 #endregion
135 }
136 }