diff --git a/TestBenchFramework/Forms/ResultItemSpec.cs b/TestBenchFramework/Forms/ResultItemSpec.cs
new file mode 100644
index 000000000..38f1987f7
--- /dev/null
+++ b/TestBenchFramework/Forms/ResultItemSpec.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Text;
+
+namespace TBF.Forms
+{
+ public class ResultItemSpec
+ {
+ static int idCounter; /// Values of this static counter are assigned to ID-s in instance constructor
+ static ResultItemSpec() { idCounter = 0; } /// Static constructor
+
+ /// Public fields
+ public readonly int ID;
+ public readonly string Name;
+ public readonly string ClmnHeaderText;
+ public readonly string Format;
+
+ public delegate float PickDlgt(Entities.MeterTestResult meterTestResult);
+ public readonly PickDlgt Pick;
+
+ /// Public constructor which assignes unique ID-s
+ public ResultItemSpec(string name, string clmnHeaderText, string format, PickDlgt pick)
+ {
+ ID = idCounter++;
+ Name = name;
+ ClmnHeaderText = clmnHeaderText;
+ Format = format;
+ Pick = pick;
+ }
+ }
+}
diff --git a/TestBenchFramework/Forms/ResultsConfig.Designer.cs b/TestBenchFramework/Forms/ResultsConfig.Designer.cs
index f83b14b28..d6b5f8bd4 100644
--- a/TestBenchFramework/Forms/ResultsConfig.Designer.cs
+++ b/TestBenchFramework/Forms/ResultsConfig.Designer.cs
@@ -43,6 +43,7 @@
this.removeAllButton = new System.Windows.Forms.Button();
this.removeButton = new System.Windows.Forms.Button();
this.addButton = new System.Windows.Forms.Button();
+ this.unlockButton = new System.Windows.Forms.Button();
this.testsArangementGroupBox.SuspendLayout();
this.metersArangementGroupBox.SuspendLayout();
this.SuspendLayout();
@@ -50,6 +51,7 @@
// testsRowsRadioButton
//
this.testsRowsRadioButton.AutoSize = true;
+ this.testsRowsRadioButton.Enabled = false;
this.testsRowsRadioButton.Location = new System.Drawing.Point(21, 24);
this.testsRowsRadioButton.Name = "testsRowsRadioButton";
this.testsRowsRadioButton.Size = new System.Drawing.Size(120, 17);
@@ -61,6 +63,7 @@
// testsColumnsRadioButton
//
this.testsColumnsRadioButton.AutoSize = true;
+ this.testsColumnsRadioButton.Enabled = false;
this.testsColumnsRadioButton.Location = new System.Drawing.Point(21, 46);
this.testsColumnsRadioButton.Name = "testsColumnsRadioButton";
this.testsColumnsRadioButton.Size = new System.Drawing.Size(137, 17);
@@ -94,6 +97,7 @@
// verticallyRadioButton
//
this.verticallyRadioButton.AutoSize = true;
+ this.verticallyRadioButton.Enabled = false;
this.verticallyRadioButton.Location = new System.Drawing.Point(21, 24);
this.verticallyRadioButton.Name = "verticallyRadioButton";
this.verticallyRadioButton.Size = new System.Drawing.Size(67, 17);
@@ -105,6 +109,7 @@
// horizontallyRadioButton
//
this.horizontallyRadioButton.AutoSize = true;
+ this.horizontallyRadioButton.Enabled = false;
this.horizontallyRadioButton.Location = new System.Drawing.Point(21, 46);
this.horizontallyRadioButton.Name = "horizontallyRadioButton";
this.horizontallyRadioButton.Size = new System.Drawing.Size(79, 17);
@@ -115,26 +120,28 @@
//
// okButton
//
- this.okButton.Location = new System.Drawing.Point(283, 18);
+ this.okButton.Location = new System.Drawing.Point(283, 57);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(104, 30);
this.okButton.TabIndex = 4;
- this.okButton.Text = "OK";
+ this.okButton.Text = "Close";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.cancelButton.Location = new System.Drawing.Point(283, 55);
+ this.cancelButton.Location = new System.Drawing.Point(283, 94);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(104, 30);
this.cancelButton.TabIndex = 5;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
+ this.cancelButton.Visible = false;
//
// availableResultsListBox
//
+ this.availableResultsListBox.Enabled = false;
this.availableResultsListBox.FormattingEnabled = true;
this.availableResultsListBox.Location = new System.Drawing.Point(12, 205);
this.availableResultsListBox.Name = "availableResultsListBox";
@@ -144,6 +151,7 @@
//
// selectedResultsListBox
//
+ this.selectedResultsListBox.Enabled = false;
this.selectedResultsListBox.FormattingEnabled = true;
this.selectedResultsListBox.Location = new System.Drawing.Point(252, 205);
this.selectedResultsListBox.Name = "selectedResultsListBox";
@@ -172,6 +180,7 @@
// removeAllButton
//
this.removeAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.removeAllButton.Enabled = false;
this.removeAllButton.Location = new System.Drawing.Point(153, 306);
this.removeAllButton.Name = "removeAllButton";
this.removeAllButton.Size = new System.Drawing.Size(94, 30);
@@ -183,6 +192,7 @@
// removeButton
//
this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.removeButton.Enabled = false;
this.removeButton.Location = new System.Drawing.Point(153, 271);
this.removeButton.Name = "removeButton";
this.removeButton.Size = new System.Drawing.Size(93, 30);
@@ -194,6 +204,7 @@
// addButton
//
this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.addButton.Enabled = false;
this.addButton.Location = new System.Drawing.Point(153, 236);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(93, 30);
@@ -202,6 +213,16 @@
this.addButton.UseVisualStyleBackColor = true;
this.addButton.Click += new System.EventHandler(this.addButton_Click);
//
+ // unlockButton
+ //
+ this.unlockButton.Location = new System.Drawing.Point(283, 21);
+ this.unlockButton.Name = "unlockButton";
+ this.unlockButton.Size = new System.Drawing.Size(104, 30);
+ this.unlockButton.TabIndex = 47;
+ this.unlockButton.Text = "Unlock";
+ this.unlockButton.UseVisualStyleBackColor = true;
+ this.unlockButton.Click += new System.EventHandler(this.unlockButton_Click);
+ //
// ResultsConfig
//
this.AcceptButton = this.okButton;
@@ -209,6 +230,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(399, 379);
+ this.Controls.Add(this.unlockButton);
this.Controls.Add(this.removeAllButton);
this.Controls.Add(this.removeButton);
this.Controls.Add(this.addButton);
@@ -250,5 +272,6 @@
private System.Windows.Forms.Button removeAllButton;
private System.Windows.Forms.Button removeButton;
private System.Windows.Forms.Button addButton;
+ private System.Windows.Forms.Button unlockButton;
}
}
\ No newline at end of file
diff --git a/TestBenchFramework/Forms/ResultsConfig.cs b/TestBenchFramework/Forms/ResultsConfig.cs
index 35adef60d..b0b0e5426 100644
--- a/TestBenchFramework/Forms/ResultsConfig.cs
+++ b/TestBenchFramework/Forms/ResultsConfig.cs
@@ -12,6 +12,11 @@ namespace TBF.Forms
{
public partial class ResultsConfig : Form
{
+ ///
+ /// Required access rights to make changes with this form
+ ///
+ const Grp.GID RequiredGroupMembership = Grp.GID.Metrologists;
+
/// Arrangement of tests
public enum TestsAre
{
@@ -28,23 +33,21 @@ namespace TBF.Forms
}
public Meters MetersArrangement;
- /// Results items to be selected in the configuration
- public enum ResultsItem
- {
- Abc,
- Def,
- Count
- }
- //
- public IList AvailableItems;
- public IList SelectedItems;
+ public IList allAvailableItems;
+ public IList AvailableItems;
+ public IList SelectedItems;
+ bool unlocked;
public ResultsConfig()
{
InitializeComponent();
- SelectedItems = new List();
+ unlocked = false;
+ cancelButton.Visible = false;
+ SelectedItems = new List();
+
+ CreateListOfAvailableItems();
AvailableItems = GetListOfAvailableItems();
}
@@ -62,7 +65,8 @@ namespace TBF.Forms
addButton.Text = Strings.Add;
removeButton.Text = Strings.Remove;
removeAllButton.Text = Strings.Remove_all;
- okButton.Text = Strings.OkBtnText;
+ unlockButton.Text = Strings.UnlockBtnText;
+ okButton.Text = Strings.CloseBtnText;
cancelButton.Text = Strings.CancelBtnText;
}
@@ -80,20 +84,22 @@ namespace TBF.Forms
RedrawSelected();
}
+ void CreateListOfAvailableItems()
+ {
+ allAvailableItems = new List();
+ allAvailableItems.Add(new ResultItemSpec("PulsesMeter", "PulsesMeter", "F0", x => (float)x.PulsesMeter));
+ allAvailableItems.Add(new ResultItemSpec("PulsesMaster", "PulsesMaster", "F0", x => (float)x.PulsesMaster));
+ }
+
///
/// 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'.
///
/// A list of available items which does not contain the selected items
- IList GetListOfAvailableItems()
+ IList GetListOfAvailableItems()
{
- IList availableItems = new List();
- for (ResultsItem item = 0; item < ResultsItem.Count; item++)
- {
- if (!SelectedItems.Contains(item)) availableItems.Add(item);
- }
- return availableItems;
+ return allAvailableItems;
}
///
@@ -102,7 +108,7 @@ namespace TBF.Forms
void RedrawAvailable()
{
availableResultsListBox.Items.Clear();
- foreach (var item in AvailableItems) availableResultsListBox.Items.Add(item.ToString());
+ foreach (var item in AvailableItems) availableResultsListBox.Items.Add(item.Name);
}
///
@@ -111,7 +117,40 @@ namespace TBF.Forms
void RedrawSelected()
{
selectedResultsListBox.Items.Clear();
- foreach (var item in SelectedItems) selectedResultsListBox.Items.Add(item.ToString());
+ foreach (var item in SelectedItems) selectedResultsListBox.Items.Add(item.Name);
+ }
+
+ private void unlockButton_Click(object sender, EventArgs e)
+ {
+ if (!unlocked)
+ {
+ if (!Entities.User.CurrentUser.IsMemberOf(RequiredGroupMembership))
+ {
+ if ((new LoginDlg(RequiredGroupMembership)).ShowDialog() != DialogResult.OK) return;
+ }
+ else if (Program.LocalSettings.AlwaysAskPasswdWhenUnlocking)
+ {
+ if ((new LoginDlg(Entities.User.CurrentUser.Name, RequiredGroupMembership)).ShowDialog() != DialogResult.OK) return;
+ }
+
+ unlocked = true;
+
+ ///
+ /// Unlock user interface controls
+ ///
+ unlockButton.Enabled = false;
+ okButton.Text = Strings.OkBtnText;
+ cancelButton.Visible = true;
+ testsRowsRadioButton.Enabled = true;
+ testsColumnsRadioButton.Enabled = true;
+ verticallyRadioButton.Enabled = true;
+ horizontallyRadioButton.Enabled = true;
+ availableResultsListBox.Enabled = true;
+ selectedResultsListBox.Enabled = true;
+ addButton.Enabled = true;
+ removeButton.Enabled = true;
+ removeAllButton.Enabled = true;
+ }
}
void okButton_Click(object sender, EventArgs e)
@@ -129,7 +168,7 @@ namespace TBF.Forms
private void availableResultsListBox_DoubleClick(object sender, EventArgs e)
{
/// Double click works when just one item is selected
- IList itemsToRemove = new List();
+ IList itemsToRemove = new List();
if (availableResultsListBox.SelectedIndices.Count == 1)
{
var item = AvailableItems[availableResultsListBox.SelectedIndices[0]];
@@ -174,7 +213,7 @@ namespace TBF.Forms
for (int i = selectedResultsListBox.SelectedIndices.Count - 1; i >= 0; i--)
{
- ResultsItem item = SelectedItems[selectedResultsListBox.SelectedIndices[i]];
+ ResultItemSpec item = SelectedItems[selectedResultsListBox.SelectedIndices[i]];
SelectedItems.Remove(item);
}
AvailableItems = GetListOfAvailableItems();
diff --git a/TestBenchFramework/TBF.csproj b/TestBenchFramework/TBF.csproj
index 7fa1e1f0f..ec2365fc4 100644
--- a/TestBenchFramework/TBF.csproj
+++ b/TestBenchFramework/TBF.csproj
@@ -530,6 +530,7 @@
EmergencyStopForm.cs
+
Form