diff --git a/Config/Config.csproj b/Config/Config.csproj
index 66057c8b2..96a973b16 100644
--- a/Config/Config.csproj
+++ b/Config/Config.csproj
@@ -75,6 +75,7 @@
+
diff --git a/Config/Entities/BenchPath.cs b/Config/Entities/BenchPath.cs
index bac041d58..8572a10d9 100644
--- a/Config/Entities/BenchPath.cs
+++ b/Config/Entities/BenchPath.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class BenchPath : IHasItemNr, IHasValves
+ public class BenchPath : IHasName, IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/Component.cs b/Config/Entities/Component.cs
index b70510bad..177cec997 100644
--- a/Config/Entities/Component.cs
+++ b/Config/Entities/Component.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class Component : IHasItemNr
+ public class Component : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/FeedingPath.cs b/Config/Entities/FeedingPath.cs
index ffca2e87d..dac4a6d59 100644
--- a/Config/Entities/FeedingPath.cs
+++ b/Config/Entities/FeedingPath.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class FeedingPath : IHasItemNr, IHasValves
+ public class FeedingPath : IHasName, IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/HeatMetersPath.cs b/Config/Entities/HeatMetersPath.cs
index a1b6066ec..95e7c0068 100644
--- a/Config/Entities/HeatMetersPath.cs
+++ b/Config/Entities/HeatMetersPath.cs
@@ -5,7 +5,7 @@ using System;
namespace Config.Entities
{
- public class HeatMetersPath : IHasItemNr
+ public class HeatMetersPath : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/IHasName.cs b/Config/Entities/IHasName.cs
new file mode 100644
index 000000000..44bd1137c
--- /dev/null
+++ b/Config/Entities/IHasName.cs
@@ -0,0 +1,11 @@
+///
+/// Copyright (c) 2017 Sensus Metering Systems
+///
+namespace Config.Entities
+{
+ public interface IHasName
+ {
+ int Id { get; }
+ string Name { get; set; }
+ }
+}
diff --git a/Config/Entities/MetersPath.cs b/Config/Entities/MetersPath.cs
index 501114738..6c105a891 100644
--- a/Config/Entities/MetersPath.cs
+++ b/Config/Entities/MetersPath.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class MetersPath : IHasItemNr
+ public class MetersPath : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/OutputPath.cs b/Config/Entities/OutputPath.cs
index f8fb5f231..8b375f3b5 100644
--- a/Config/Entities/OutputPath.cs
+++ b/Config/Entities/OutputPath.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class OutputPath : IHasItemNr, IHasValves
+ public class OutputPath : IHasName, IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/Procedure.cs b/Config/Entities/Procedure.cs
index a9be17197..9ed215cf8 100644
--- a/Config/Entities/Procedure.cs
+++ b/Config/Entities/Procedure.cs
@@ -11,7 +11,7 @@ namespace Config.Entities
///
/// Stores one test procedure, supports revisions and history log
///
- public class Procedure : IHasItemNr
+ public class Procedure : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/Test.cs b/Config/Entities/Test.cs
index b5b83287e..f06a2c439 100644
--- a/Config/Entities/Test.cs
+++ b/Config/Entities/Test.cs
@@ -11,7 +11,7 @@ namespace Config.Entities
///
/// Test, consisting of one or more repetitions of the test 'SingleTest'.
///
- public class Test : IHasItemNr
+ public class Test : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/TransitionSequence.cs b/Config/Entities/TransitionSequence.cs
index b71f3da8f..d17ef434a 100644
--- a/Config/Entities/TransitionSequence.cs
+++ b/Config/Entities/TransitionSequence.cs
@@ -8,7 +8,7 @@ namespace Config.Entities
///
/// Stores one transition sequence containing a list of transition steps
///
- public class TransitionSequence : IHasItemNr
+ public class TransitionSequence : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/Config/Entities/VirtualBenchSequence.cs b/Config/Entities/VirtualBenchSequence.cs
index 857dc8fbd..151d8c20c 100644
--- a/Config/Entities/VirtualBenchSequence.cs
+++ b/Config/Entities/VirtualBenchSequence.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
- public class VirtualBenchSequence : IHasItemNr
+ public class VirtualBenchSequence : IHasName, IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
diff --git a/TestBenchFramework/ProcedureDlg.cs b/TestBenchFramework/ProcedureDlg.cs
index 981a18791..da714a064 100644
--- a/TestBenchFramework/ProcedureDlg.cs
+++ b/TestBenchFramework/ProcedureDlg.cs
@@ -30,6 +30,8 @@ namespace TBF
///
public Procedure LoadedProcedure;
+ IList usedNames; /// Already used names
+
/// Auxiliary public lists used also by user controls in tab pages
public IList TbfComponents;
public IList Valves;
@@ -88,13 +90,15 @@ namespace TBF
parametersListViewEx.SubItemEndEditing += new Results.Forms.SubItemEndEditingEventHandler(parametersListViewEx_SubItemEndEditing);
}
- public ProcedureDlg(Config.Entities.Procedure procedure)
+ public ProcedureDlg(Config.Entities.Procedure procedure, IList usedNames)
: this()
{
if (procedure == null) throw new ArgumentNullException("procedure");
LoadedProcedure = procedure;
+ this.usedNames = usedNames;
+
sharedButtons.RequiredGroupMembership = procedure.Protected ? Users.Grp.GID.Metrologists : Users.Grp.GID.TestingSpecialists;
/// Prepare a list of components and a list of all valves in the test bench
@@ -1606,6 +1610,15 @@ namespace TBF
foreach (var ctrl in testParamsCtrls) ctrl.UpdateAll();
foreach (var ctrl in procedureParamsCtrls) ctrl.UpdateAll();
+ if (usedNames != null && usedNames.Contains(LoadedProcedure.Name))
+ {
+ MessageBox.Show(string.Format("There is already a procedure named '{0}'.{1}Choose another name please.", LoadedProcedure.Name, Environment.NewLine),
+ Strings.Warning,
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Exclamation);
+ return;
+ }
+
Program.LocalSettings.OneProcedureDlgLeft = Location.X;
Program.LocalSettings.OneProcedureDlgTop = Location.Y;
Program.LocalSettings.OneProcedureDlgWidth = Size.Width;
diff --git a/TestBenchFramework/UiControls/BaseWithListViewEx.cs b/TestBenchFramework/UiControls/BaseWithListViewEx.cs
index 1a39b4579..59597c7bc 100644
--- a/TestBenchFramework/UiControls/BaseWithListViewEx.cs
+++ b/TestBenchFramework/UiControls/BaseWithListViewEx.cs
@@ -199,5 +199,18 @@ namespace TBF.UiControls
Items[ix + 1].Selected = true;
Items[ix + 1].EnsureVisible();
}
+
+
+ public IList GetUsedNames()
+ {
+ IList usedNames = new List();
+
+ if (MyItems != null)
+ {
+ foreach (var item in MyItems) if (item is IHasName) usedNames.Add((item as IHasName).Name);
+ }
+
+ return usedNames;
+ }
}
}
diff --git a/TestBenchFramework/UiControls/ProceduresCtrl.cs b/TestBenchFramework/UiControls/ProceduresCtrl.cs
index c56740c46..5396014f9 100644
--- a/TestBenchFramework/UiControls/ProceduresCtrl.cs
+++ b/TestBenchFramework/UiControls/ProceduresCtrl.cs
@@ -163,7 +163,7 @@ namespace TBF.UiControls
newProcedure.CreationUser = Users.GlobalData.CurrentUser.UserName;
newProcedure.CreationTime = DateTime.Now;
- if (new ProcedureDlg(newProcedure).ShowDialog() == DialogResult.OK)
+ if (new ProcedureDlg(newProcedure, GetUsedNames()).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();
@@ -231,9 +231,11 @@ namespace TBF.UiControls
modifiedProcedure.Revision = originalProcedure.Revision + 1;
modifiedProcedure.ObtainedByCopy = false;
- if (new ProcedureDlg(modifiedProcedure).ShowDialog() == DialogResult.OK)
+ IList usedNames = GetUsedNames();
+ usedNames.Remove(originalProcedure.Name); /// Allow original procedure name
+ ///
+ if (new ProcedureDlg(modifiedProcedure, usedNames).ShowDialog() == DialogResult.OK)
{
- /// TODO: Make name uniqueness test
parent.Unlock();
using (var transaction = session.BeginTransaction())
@@ -285,7 +287,7 @@ namespace TBF.UiControls
newProcedure.CreationTime = DateTime.Now;
newProcedure.Protected = false;
- if ((new ProcedureDlg(newProcedure)).ShowDialog() == DialogResult.OK)
+ if ((new ProcedureDlg(newProcedure, GetUsedNames())).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();
@@ -338,7 +340,7 @@ namespace TBF.UiControls
newProcedure.CreationUser = Users.GlobalData.CurrentUser.UserName;
newProcedure.CreationTime = DateTime.Now;
- if ((new ProcedureDlg(newProcedure)).ShowDialog() == DialogResult.OK)
+ if ((new ProcedureDlg(newProcedure, GetUsedNames())).ShowDialog() == DialogResult.OK)
{
/// TODO: Make name uniqueness test
parent.Unlock();