196 lines
5.4 KiB
C#
196 lines
5.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using TBF.Resources;
|
|
|
|
namespace TBF.Forms
|
|
{
|
|
public partial class ResultsConfig : Form
|
|
{
|
|
/// Arrangement of tests
|
|
public enum TestsAre
|
|
{
|
|
Rows,
|
|
Columns,
|
|
}
|
|
public TestsAre TestsArrangement;
|
|
|
|
/// Arrangement of meters
|
|
public enum Meters
|
|
{
|
|
Vertically,
|
|
Horizontally,
|
|
}
|
|
public Meters MetersArrangement;
|
|
|
|
/// Results items to be selected in the configuration
|
|
public enum ResultsItem
|
|
{
|
|
Hovno,
|
|
Makove,
|
|
Count
|
|
}
|
|
//
|
|
public IList<ResultsItem> AvailableItems;
|
|
public IList<ResultsItem> SelectedItems;
|
|
|
|
|
|
public ResultsConfig()
|
|
{
|
|
InitializeComponent();
|
|
|
|
SelectedItems = new List<ResultsItem>();
|
|
AvailableItems = GetListOfAvailableItems();
|
|
}
|
|
|
|
void Localize()
|
|
{
|
|
Text = Strings.Configuration;
|
|
testsArangementGroupBox.Text = Strings.Arrangement_of_tests;
|
|
metersArangementGroupBox.Text = Strings.Arrangement_of_meters;
|
|
testsRowsRadioButton.Text = Strings.Tests_are_rows;
|
|
testsColumnsRadioButton.Text = Strings.Tests_are_columns;
|
|
horizontallyRadioButton.Text = Strings.Horizontally;
|
|
verticallyRadioButton.Text = Strings.Vertically;
|
|
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();
|
|
|
|
testsRowsRadioButton.Checked = (TestsArrangement == TestsAre.Rows);
|
|
testsColumnsRadioButton.Checked = (TestsArrangement == TestsAre.Columns);
|
|
|
|
horizontallyRadioButton.Checked = (MetersArrangement == Meters.Horizontally);
|
|
verticallyRadioButton.Checked = (MetersArrangement == Meters.Vertically);
|
|
|
|
RedrawAvailable();
|
|
RedrawSelected();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create a list of available items from the complete list from 'auxBrdUpgInfo'
|
|
/// and the list of selected items. In this way the order of items in the created list
|
|
/// is always the same as in the original list in 'auxBrdUpgInfo'.
|
|
/// </summary>
|
|
/// <returns>A list of available items which does not contain the selected items</returns>
|
|
IList<ResultsItem> GetListOfAvailableItems()
|
|
{
|
|
IList<ResultsItem> availableItems = new List<ResultsItem>();
|
|
for (ResultsItem item = 0; item < ResultsItem.Count; item++)
|
|
{
|
|
if (!SelectedItems.Contains(item)) availableItems.Add(item);
|
|
}
|
|
return availableItems;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Redraw selected items (right hand side)
|
|
/// </summary>
|
|
void RedrawAvailable()
|
|
{
|
|
availableResultsListBox.Items.Clear();
|
|
foreach (var item in AvailableItems) availableResultsListBox.Items.Add(item.ToString());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Redraw selected items (right hand side)
|
|
/// </summary>
|
|
void RedrawSelected()
|
|
{
|
|
selectedResultsListBox.Items.Clear();
|
|
foreach (var item in SelectedItems) selectedResultsListBox.Items.Add(item.ToString());
|
|
}
|
|
|
|
void okButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (testsColumnsRadioButton.Checked) TestsArrangement = TestsAre.Columns;
|
|
else TestsArrangement = TestsAre.Rows;
|
|
|
|
if (horizontallyRadioButton.Checked) MetersArrangement = Meters.Horizontally;
|
|
else MetersArrangement = Meters.Vertically;
|
|
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
|
|
private void availableResultsListBox_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
/// Double click works when just one item is selected
|
|
IList<ResultsItem> itemsToRemove = new List<ResultsItem>();
|
|
if (availableResultsListBox.SelectedIndices.Count == 1)
|
|
{
|
|
var item = AvailableItems[availableResultsListBox.SelectedIndices[0]];
|
|
SelectedItems.Add(item);
|
|
AvailableItems.Remove(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);
|
|
AvailableItems.Remove(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]);
|
|
AvailableItems = GetListOfAvailableItems();
|
|
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--)
|
|
{
|
|
ResultsItem item = SelectedItems[selectedResultsListBox.SelectedIndices[i]];
|
|
SelectedItems.Remove(item);
|
|
}
|
|
AvailableItems = GetListOfAvailableItems();
|
|
RedrawAvailable();
|
|
RedrawSelected();
|
|
}
|
|
|
|
void removeAllButton_Click(object sender, EventArgs e)
|
|
{
|
|
/// Remove all items from 'Selected' list
|
|
|
|
SelectedItems.Clear();
|
|
AvailableItems = GetListOfAvailableItems();
|
|
RedrawAvailable();
|
|
RedrawSelected();
|
|
}
|
|
}
|
|
}
|