annotate ARClient/frmEditResource.cs @ 0:90ea68d4f92f

First release
author Ivo Smits <Ivo@UCIS.nl>
date Sat, 08 Nov 2014 22:43:51 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
1 ???using System;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
2 using System.Collections;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
3 using System.Net;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
4 using System.Text;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
5 using System.Windows.Forms;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
6
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
7 namespace ARClient {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
8 partial class frmEditResource : Form {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
9 public Form1 MainForm { get; set; }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
10 public Byte[] Label = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
11 public IDictionary Value = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
12 public UInt32 UpdateSerial = 0;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
13
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
14 public frmEditResource() {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
15 InitializeComponent();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
16 radTypeDomain.Checked = true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
17 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
18
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
19 private void frmEditResource_Load(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
20 tabControl1_SelectedIndexChanged(null, null);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
21 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
22 public void ImportData() {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
23 tabControl1.SelectedIndex = 1;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
24 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
25
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
26 private void radType_CheckedChanged(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
27 if (radTypeDomain.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
28 lblLabelHint.Text = "Enter the domain name including the top level component. For an Anonet domain, your domain name must end in '.ano'.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
29 if (Label != null && Label.Length > 1 && Label[0] == 4) txtLabelValue.Text = Encoding.UTF8.GetString(Label, 1, Label.Length - 1);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
30 else txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
31 } else if (radTypeIPv4.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
32 lblLabelHint.Text = "Enter the IPv4 network in CIDR notation, e.g. '1.2.3.0/24'.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
33 if (Label != null && Label.Length == 6 && Label[0] == 1) txtLabelValue.Text = Label[1].ToString() + "." + Label[2].ToString() + "." + Label[3].ToString() + "." + Label[4].ToString() + "/" + Label[5].ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
34 else txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
35 } else if (radTypeIPv6.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
36 lblLabelHint.Text = "Enter the IPv6 network in CIDR notation, e.g. 'fd63:1e39:6f73:001b::/64'.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
37 if (Label != null && Label.Length == 18 && Label[0] == 2) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
38 Byte[] address = new Byte[16];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
39 Buffer.BlockCopy(Label, 2, address, 0, 16);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
40 txtLabelValue.Text = (new IPAddress(address)).ToString() + "/" + Label[17].ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
41 } else txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
42 } else if (radTypeASNumber.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
43 lblLabelHint.Text = "Enter the AS number.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
44 if (Label != null && Label.Length == 5 && Label[0] == 3) txtLabelValue.Text = Functions.DecodeInt32BigEndian(Label, 1).ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
45 else txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
46 } else if (radTypeOtherHex.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
47 lblLabelHint.Text = "Expert usage! Enter the raw label value in hexadecimal notation.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
48 if (Label != null) txtLabelValue.Text = Functions.bin2hex(Label);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
49 else txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
50 } else {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
51 lblLabelHint.Text = "Select a resource type.";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
52 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
53 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
54
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
55 private Boolean TryParseLabel() {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
56 Label = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
57 if (radTypeDomain.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
58 if (txtLabelValue.Text.Length < 1) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
59 Byte[] bytes = Encoding.UTF8.GetBytes(txtLabelValue.Text.ToLowerInvariant());
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
60 Label = new Byte[bytes.Length + 1];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
61 Label[0] = 4;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
62 bytes.CopyTo(Label, 1);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
63 return true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
64 } else if (radTypeIPv4.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
65 String[] parts1 = txtLabelValue.Text.Split('/');
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
66 if (parts1.Length != 2) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
67 String[] parts2 = parts1[0].Split('.');
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
68 if (parts2.Length != 4) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
69 Byte[] bytes = new Byte[6];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
70 bytes[0] = 1;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
71 for (int i = 0; i < 4; i++) if (!Byte.TryParse(parts2[i], out bytes[i + 1])) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
72 if (!Byte.TryParse(parts1[1], out bytes[5])) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
73 if (bytes[5] > 32) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
74 Label = bytes;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
75 return true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
76 } else if (radTypeIPv6.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
77 String[] parts1 = txtLabelValue.Text.Split('/');
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
78 if (parts1.Length != 2) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
79 IPAddress addr;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
80 if (!IPAddress.TryParse(parts1[0], out addr)) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
81 if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetworkV6) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
82 Byte len;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
83 if (!Byte.TryParse(parts1[1], out len)) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
84 if (len > 128) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
85 Label = new Byte[18];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
86 Label[0] = 2;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
87 addr.GetAddressBytes().CopyTo(Label, 1);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
88 Label[17] = len;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
89 return true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
90 } else if (radTypeASNumber.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
91 UInt32 asn;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
92 if (!UInt32.TryParse(txtLabelValue.Text, out asn)) return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
93 Label = new Byte[5];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
94 Label[0] = 3;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
95 Functions.EncodeInt32BigEndian(asn).CopyTo(Label, 1);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
96 return true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
97 } else if (radTypeOtherHex.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
98 Label = Functions.hex2bin(txtLabelValue.Text);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
99 return Label != null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
100 } else {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
101 return false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
102 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
103 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
104
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
105 private void txtLabelValue_TextChanged(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
106 Boolean valid = TryParseLabel();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
107 lblLabelValid.Visible = !valid;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
108 btnLabelNext.Visible = valid;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
109 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
110
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
111 private void btnLabelNext_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
112 tabControl1.SelectedIndex++;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
113 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
114
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
115 private void UpdateValueTree() {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
116 lvwData.SuspendLayout();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
117 lvwData.Nodes.Clear();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
118
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
119 if (Value is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
120 foreach (DictionaryEntry child in (IDictionary)Value) lvwData.Nodes.Add(AddResourceValueInTree(child.Key.ToString() + ": ", child.Value));
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
121 } else if (Value is ICollection) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
122 foreach (Object child in (ICollection)Value) lvwData.Nodes.Add(AddResourceValueInTree(String.Empty, child));
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
123 } else if (Value == null) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
124 lvwData.Nodes.Add("Null").Tag = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
125 } else {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
126 lvwData.Nodes.Add(Value.ToString()).Tag = Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
127 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
128
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
129 lvwData.ResumeLayout();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
130 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
131 private TreeNode AddResourceValueInTree(String prefix, Object value) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
132 TreeNode node = new TreeNode();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
133 if (value is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
134 node.Text = prefix + "Dictionary";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
135 foreach (DictionaryEntry child in (IDictionary)value) node.Nodes.Add(AddResourceValueInTree(child.Key.ToString() + ": ", child.Value));
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
136 } else if (value is ICollection) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
137 node.Text = prefix + "Collection";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
138 foreach (Object child in (ICollection)value) node.Nodes.Add(AddResourceValueInTree(String.Empty, child));
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
139 } else if (value == null) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
140 node.Text = prefix + "Null";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
141 } else {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
142 node.Text = prefix + value.ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
143 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
144 node.Tag = value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
145 node.Expand();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
146 return node;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
147 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
148
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
149 private void btnDataSetOwner_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
150 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
151 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
152 form.Description = "Enter the owner name:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
153 if (!(Value is IDictionary)) Value = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
154 if (Value.Contains("owner")) form.Value = Value["owner"].ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
155 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
156 Value["owner"] = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
157 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
158 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
159 private void btnDataSetDescription_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
160 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
161 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
162 form.Description = "Enter the resource description:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
163 if (!(Value is IDictionary)) Value = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
164 if (Value.Contains("descr")) form.Value = Value["descr"].ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
165 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
166 Value["descr"] = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
167 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
168 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
169 private void btnDataAddDNS_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
170 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
171 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
172 form.Description = "Enter the nameserver name in the current zone, or add a dot ad the end to use a nameserver in another zone:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
173 form.Value = "ns1";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
174 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
175 String nsname = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
176 String nsip4 = null, nsip6 = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
177 if (!nsname.EndsWith(".")) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
178 form.Description = "Enter the nameserver IPv4 address, if any:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
179 form.Value = "";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
180 if (form.ShowDialog(this) == DialogResult.OK) nsip4 = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
181 form.Description = "Enter the nameserver IPv6 address, if any:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
182 form.Value = "";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
183 if (form.ShowDialog(this) == DialogResult.OK) nsip6 = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
184 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
185 if (!(Value is IDictionary)) Value = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
186 if (Value["ns"] == null || !(Value["ns"] is IDictionary)) Value["ns"] = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
187 IDictionary dns = (IDictionary)Value["ns"];
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
188 IList ns = new ArrayList();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
189 dns[nsname] = ns;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
190 if (nsip4 != null && nsip4.Length > 0) ns.Add(nsip4);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
191 if (nsip6 != null && nsip6.Length > 0) ns.Add(nsip6);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
192 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
193 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
194
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
195 private void btnDataEditString_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
196 if (lvwData.SelectedNode == null || lvwData.SelectedNode.Tag == null) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
197 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
198 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
199 form.Description = "Enter the new value:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
200 form.Value = lvwData.SelectedNode.Tag.ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
201 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
202 Object parent = lvwData.SelectedNode.Parent == null ? Value : lvwData.SelectedNode.Parent.Tag;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
203 if (parent == null) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
204 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
205 foreach (DictionaryEntry entry in ((IDictionary)parent)) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
206 if (lvwData.SelectedNode.Tag == entry.Value) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
207 ((IDictionary)parent)[entry.Key] = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
208 break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
209 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
210 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
211 } else if (parent is IList) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
212 for (int i = 0; i < ((IList)parent).Count; i++) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
213 if (((IList)parent)[i] == lvwData.SelectedNode.Tag) ((IList)parent)[i] = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
214 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
215 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
216 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
217 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
218
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
219 private void btnDataAddSring_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
220 Object parent = lvwData.SelectedNode == null ? Value : lvwData.SelectedNode.Tag;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
221 if (!(parent is IDictionary || parent is IList)) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
222 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
223 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
224 String dkey = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
225 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
226 form.Description = "Enter the dictionary key:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
227 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
228 dkey = form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
229 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
230 form.Value = String.Empty;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
231 form.Description = "Enter the value:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
232 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
233 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
234 ((IDictionary)parent)[dkey]= form.Value;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
235 } else if (parent is IList) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
236 ((IList)parent).Add(form.Value);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
237 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
238 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
239 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
240
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
241 private void btnDataAddCollection_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
242 Object parent = lvwData.SelectedNode == null ? Value : lvwData.SelectedNode.Tag;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
243 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
244 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
245 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
246 form.Description = "Enter the dictionary key:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
247 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
248 ((IDictionary)parent)[form.Value] = new ArrayList();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
249 } else if (parent is IList) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
250 ((IList)parent).Add(new ArrayList());
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
251 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
252 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
253 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
254
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
255 private void btnDataAddDictionary_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
256 Object parent = lvwData.SelectedNode == null ? Value : lvwData.SelectedNode.Tag;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
257 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
258 frmTextInput form = new frmTextInput();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
259 form.Text = "MARC - Resource data";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
260 form.Description = "Enter the dictionary key:";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
261 if (form.ShowDialog(this) != DialogResult.OK) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
262 ((IDictionary)parent)[form.Value] = new Hashtable();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
263 } else if (parent is IList) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
264 ((IList)parent).Add(new Hashtable());
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
265 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
266 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
267 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
268
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
269 private void btnDataDelete_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
270 if (lvwData.SelectedNode == null || lvwData.SelectedNode.Tag == null) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
271 Object parent = lvwData.SelectedNode.Parent == null ? Value : lvwData.SelectedNode.Parent.Tag;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
272 if (parent == null) return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
273 if (parent is IDictionary) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
274 foreach (DictionaryEntry entry in ((IDictionary)parent)) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
275 if (lvwData.SelectedNode.Tag == entry.Value) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
276 ((IDictionary)parent).Remove(entry.Key);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
277 break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
278 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
279 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
280 } else if (parent is IList) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
281 ((IList)parent).Remove(lvwData.SelectedNode.Tag);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
282 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
283 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
284 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
285
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
286 private void btnDataDeleteAll_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
287 Value = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
288 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
289 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
290
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
291 private void UpdateResourceStatus() {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
292 MARCUpdate resource;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
293 grpUpdateConflict.Visible = false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
294 grpUpdateExport.Visible = true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
295 txtUpdateLabel.Text = Functions.GetNameForLabel(Label);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
296 UpdateSerial = checked((UInt32)MARCUpdate.DateTimeToUnix(DateTime.Now));
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
297 if (MainForm.Resources.TryGetValue(new MARCLabel(Label), out resource)) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
298 txtUpdateCurrentOwner.Text = Functions.bin2hex(resource.Key.Bytes);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
299 txtUpdateCurrentTransfer.Text = resource.Transfer == null ? "None" : Functions.bin2hex(resource.Transfer.Value.Bytes);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
300 txtUpdateCurrentSerial.Text = resource.Serial.ToString() + " (" + resource.UpdateTimestamp.ToShortDateString() + ")";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
301 txtUpdateCurrentExpiration.Text = resource.Expiration == null ? "None" : resource.Expiration.Value.ToString() + " (" + resource.ExpirationTimestamp.ToShortDateString() + ")";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
302 if (!resource.CanUpdate(MainForm.PublicKey)) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
303 txtUpdateCurrentStatus.Text = "Not available";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
304 grpUpdateConflict.Visible = true;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
305 grpUpdateExport.Visible = false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
306 return;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
307 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
308 txtUpdateCurrentStatus.Text = "Registered";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
309 if (UpdateSerial <= resource.Serial) UpdateSerial = resource.Serial + 1;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
310 txtUpdateCurrentSize.Text = resource.UpdateMessage.Length.ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
311 } else {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
312 txtUpdateCurrentOwner.Text = "None";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
313 txtUpdateCurrentTransfer.Text = "None";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
314 txtUpdateCurrentSerial.Text = String.Empty;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
315 txtUpdateCurrentStatus.Text = "Free";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
316 txtUpdateCurrentSize.Text = "N/A";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
317 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
318 txtUpdateOwner.Text = MainForm.PublicKey.ToString();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
319 dtpUpdateExpiration.Value = DateTime.Now.AddYears(1);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
320 dtpUpdateExpiration.Checked = false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
321 chkUpdateTransferEnabled.Checked = false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
322 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
323
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
324 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
325 if (tabControl1.SelectedIndex == 0) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
326 if (Label != null && Label.Length > 0) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
327 switch (Label[0]) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
328 case 1: radTypeIPv4.Checked = true; break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
329 case 2: radTypeIPv6.Checked = true; break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
330 case 3: radTypeASNumber.Checked = true; break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
331 case 4: radTypeDomain.Checked = true; break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
332 default: radTypeOtherHex.Checked = true; break;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
333 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
334 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
335 radType_CheckedChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
336 txtLabelValue_TextChanged(sender, e);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
337 } else if (Label == null || Label.Length == 0) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
338 MessageBox.Show("The selected label is not valid. Please correct the label and try again.", "MARC - Invalid label", MessageBoxButtons.OK, MessageBoxIcon.Error);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
339 tabControl1.SelectedIndex = 0;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
340 } else if (tabControl1.SelectedIndex == 1) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
341 UpdateValueTree();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
342 } else if (tabControl1.SelectedIndex == 2) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
343 UpdateResourceStatus();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
344 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
345 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
346
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
347 private void btnUpdateDelete_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
348 MARCLabel l = new MARCLabel(Label);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
349 MainForm.ResourceHasChanged(null, MainForm.Resources[l]);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
350 MainForm.Resources.Remove(l);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
351 UpdateResourceStatus();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
352 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
353
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
354 private void btnUpdateNow_Click(object sender, EventArgs e) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
355 UInt32? Expiration = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
356 Byte[] Transfer = null;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
357 if (dtpUpdateExpiration.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
358 DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
359 Expiration = checked((UInt32)(dtpUpdateExpiration.Value.ToUniversalTime() - epoch).TotalSeconds);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
360 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
361 if (chkUpdateTransferEnabled.Checked) {
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
362 Transfer = Functions.hex2bin(txtUpdateTransfer.Text);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
363 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
364 MARCUpdate update = MARCUpdate.Create(MainForm.SecretKey, UpdateSerial, Label, Value, Expiration, Transfer);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
365 txtUpdateCurrentSize.Text = update.UpdateMessage.Length.ToString() + " bytes";
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
366 MainForm.ReplaceOrAddResource(update);
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
367 MainForm.DatabaseSaved = false;
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
368 UpdateResourceStatus();
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
369 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
370 }
90ea68d4f92f First release
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
371 }