/// /// Copyright (c) 2013-2016 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.Windows.Forms; using Config.Entities; using TBF.Resources; namespace TBF.BenchControl.Output.FileWriters.Basic { public partial class ResultsConfigDlg : Form { public IList AvailableItems; public IList SelectedItems; public bool Compound; /// false = single meter items, true = combined meter items public ResultsConfigDlg() { InitializeComponent(); } void Localize() { Text = Strings.Configuration; availableResultsLabel.Text = Strings.Available_results; selectedResultsLabel.Text = Strings.Selected_results; addButton.Text = Strings.Add; removeButton.Text = Strings.Remove; removeAllButton.Text = Strings.Remove_all; okButton.Text = Strings.OkBtnText; cancelButton.Text = Strings.CancelBtnText; } void ResultsConfig_Load(object sender, EventArgs e) { Localize(); RedrawAvailable(); RedrawSelected(); } /// /// Redraw selected items (right hand side) /// void RedrawAvailable() { availableResultsListBox.Items.Clear(); AvailableItems = new List(); foreach (var item in Results.ItemSpec.AllItems) { if (!SelectedItems.Contains(item) && (Compound ? item.CanPrintCombined : item.CanPrintSingle)) { AvailableItems.Add(item); availableResultsListBox.Items.Add(item.Name); } } } /// /// Redraw selected items (right hand side) /// void RedrawSelected() { selectedResultsListBox.Items.Clear(); foreach (var item in SelectedItems) { selectedResultsListBox.Items.Add(item.Name); } } void availableResultsListBox_DoubleClick(object sender, EventArgs e) { /// Double click works when just one item is selected IList itemsToRemove = new List(); if (availableResultsListBox.SelectedIndices.Count == 1) { var item = AvailableItems[availableResultsListBox.SelectedIndices[0]]; SelectedItems.Add(item); RedrawAvailable(); RedrawSelected(); } } void addButton_Click(object sender, EventArgs e) { /// Append at the end, this code supports multiple selected items, /// although ListBox control settings may limit the max.number of selected items to one. for (int i = availableResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) { var item = AvailableItems[availableResultsListBox.SelectedIndices[i]]; SelectedItems.Add(item); } RedrawAvailable(); RedrawSelected(); } private void selectedResultsListBox_DoubleClick(object sender, EventArgs e) { /// Double click works when just one item is selected if (selectedResultsListBox.SelectedIndices.Count == 1) { SelectedItems.RemoveAt(selectedResultsListBox.SelectedIndices[0]); RedrawAvailable(); RedrawSelected(); } } void removeButton_Click(object sender, EventArgs e) { /// Remove from the list (the last selected item first so that the indexes are not affected) for (int i = selectedResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) { SelectedItems.RemoveAt(selectedResultsListBox.SelectedIndices[i]); } RedrawAvailable(); RedrawSelected(); } void removeAllButton_Click(object sender, EventArgs e) { /// Remove all items from 'Selected' list SelectedItems.Clear(); RedrawAvailable(); RedrawSelected(); } void okButton_Click(object sender, EventArgs e) { DialogResult = DialogResult.OK; Close(); } } }