using System; using System.Windows.Forms; namespace TBF { /// /// Dialog to edit local settings that specify database parameters (S1.2) /// public partial class BenchesDlg : Form { // Local copy of 'local settings' initialized to Program.localSettings. // Dialog modifies this copy and updates Program.localSettings just // when 'OK' is pressed. LocalSettings localSettings; /// /// Constructor, initializes the dialog /// public BenchesDlg() { localSettings = new LocalSettings(); localSettings.Assign(Program.LocalSettings); InitializeComponent(); RedrawTestBenchesListBox(); } void RedrawTestBenchesListBox() { testBenchesListBox.Items.Clear(); if (localSettings.testBenches != null) { int nrBenches = localSettings.testBenches.GetLength(0); for (int i = 0; i < nrBenches; i++) { testBenchesListBox.Items.Add(localSettings.testBenches[i].BenchName); } } } /// /// Create a new test bench DB specification and append it to the list /// /// Not used /// Not used private void addButton_Click(object sender, EventArgs e) { DatabaseSettings bench = new DatabaseSettings(); DatabaseSettingsDlg dlg = new DatabaseSettingsDlg(bench); DialogResult dr = dlg.ShowDialog(); if (dr == DialogResult.OK) { int nrBenches = (localSettings.testBenches == null) ? 0 : localSettings.testBenches.GetLength(0); if (nrBenches == 0) { localSettings.testBenches = new DatabaseSettings[1]; localSettings.testBenches[0] = bench; } else { DatabaseSettings[] newTestBenches = new DatabaseSettings[nrBenches + 1]; for (int i = 0; i < nrBenches; i++) { newTestBenches[i] = localSettings.testBenches[i]; } newTestBenches[nrBenches] = bench; localSettings.testBenches = newTestBenches; } testBenchesListBox.Items.Add(bench.BenchName); } } /// /// Create a new test bench DB specification,which is a copy of the /// selected bench, and append it to the list /// /// Not used /// Not used private void copyButton_Click(object sender, EventArgs e) { if (testBenchesListBox.SelectedIndex >= 0) { DatabaseSettings ori = localSettings.testBenches[testBenchesListBox.SelectedIndex]; DatabaseSettings bench = (DatabaseSettings)ori.Clone(); DatabaseSettingsDlg dlg = new DatabaseSettingsDlg(bench); DialogResult dr = dlg.ShowDialog(); if (dr == DialogResult.OK) { int nrBenches = (localSettings.testBenches == null) ? 0 : localSettings.testBenches.GetLength(0); DatabaseSettings[] newTestBenches = new DatabaseSettings[nrBenches + 1]; for (int i = 0; i < nrBenches; i++) { newTestBenches[i] = localSettings.testBenches[i]; } newTestBenches[nrBenches] = bench; localSettings.testBenches = newTestBenches; testBenchesListBox.Items.Add(bench.BenchName); } } } /// /// Edit selected test bench DB specification /// /// Not used /// Not used private void editButton_Click(object sender, EventArgs e) { if (testBenchesListBox.SelectedIndex >= 0) { DatabaseSettingsDlg dlg = new DatabaseSettingsDlg(localSettings.testBenches[testBenchesListBox.SelectedIndex]); DialogResult dr = dlg.ShowDialog(); if (dr == DialogResult.OK) { // Update the item name testBenchesListBox.Items[testBenchesListBox.SelectedIndex] = localSettings.testBenches[testBenchesListBox.SelectedIndex].BenchName; } } } /// /// Remove selected test bench DB specification from the list /// /// Not used /// Not used private void removeButton_Click(object sender, EventArgs e) { int selectedIx = testBenchesListBox.SelectedIndex; if (selectedIx >= 0) { int nrBenches = (localSettings.testBenches == null) ? 0 : localSettings.testBenches.GetLength(0); if (nrBenches == 1) { localSettings.testBenches = null; } else { DatabaseSettings[] newTestBenches = new DatabaseSettings[nrBenches - 1]; for (int i = 0; i < selectedIx; i++) { newTestBenches[i] = localSettings.testBenches[i]; } for (int i = selectedIx + 1; i < nrBenches; i++) { newTestBenches[i - 1] = localSettings.testBenches[i]; } localSettings.testBenches = newTestBenches; } RedrawTestBenchesListBox(); } } /// /// Update setting, return 'OK' /// /// Not used /// Not used private void okButton_Click(object sender, EventArgs e) { Program.LocalSettings.Assign(localSettings); // Update Program.localSettings DialogResult = DialogResult.OK; Close(); return; } /// /// Throw away changes, return 'Cancel' /// /// Not used /// Not used private void cancelButton_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); return; } /// /// Double click on an item = edit item /// /// Not used /// Not used private void testBenchesListBox_DoubleClick(object sender, EventArgs e) { editButton_Click(sender, e); } } }