Index: Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj
===================================================================
diff -u -r955a6dc2ceaeb8923ea7459e3d9630282439c277 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj (.../Core.Plugins.Map.csproj) (revision 955a6dc2ceaeb8923ea7459e3d9630282439c277)
+++ Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj (.../Core.Plugins.Map.csproj) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -87,6 +87,7 @@
+
Index: Core/Plugins/src/Core.Plugins.Map/PropertyClasses/FeatureBasedMapDataProperties.cs
===================================================================
diff -u -r73a045414bb5159fa5dc09c6b15c89fda0eb9cd0 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/src/Core.Plugins.Map/PropertyClasses/FeatureBasedMapDataProperties.cs (.../FeatureBasedMapDataProperties.cs) (revision 73a045414bb5159fa5dc09c6b15c89fda0eb9cd0)
+++ Core/Plugins/src/Core.Plugins.Map/PropertyClasses/FeatureBasedMapDataProperties.cs (.../FeatureBasedMapDataProperties.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -102,22 +102,22 @@
[ResourcesCategory(typeof(Resources), "Categories_Label")]
[ResourcesDisplayName(typeof(Resources), "Mapdata_SelectedMetaDataAttribute_DisplayName")]
[ResourcesDescription(typeof(Resources), "Mapdata_SelectedMetaDataAttribute_Description")]
- public string SelectedMetaDataAttribute
+ public SelectableMetaDataAttribute SelectedMetaDataAttribute
{
get
{
- return data.SelectedMetaDataAttribute;
+ return new SelectableMetaDataAttribute(data.SelectedMetaDataAttribute);
}
set
{
- data.SelectedMetaDataAttribute = value;
+ data.SelectedMetaDataAttribute = value.MetaDataAttribute;
data.NotifyObservers();
}
}
- public IEnumerable GetAvailableMetaDataAttributes()
+ public IEnumerable GetAvailableMetaDataAttributes()
{
- return data.MetaData;
+ return data.MetaData.Select(md => new SelectableMetaDataAttribute(md));
}
[DynamicReadOnlyValidationMethod]
Index: Core/Plugins/src/Core.Plugins.Map/PropertyClasses/IHasMetaData.cs
===================================================================
diff -u -r955a6dc2ceaeb8923ea7459e3d9630282439c277 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/src/Core.Plugins.Map/PropertyClasses/IHasMetaData.cs (.../IHasMetaData.cs) (revision 955a6dc2ceaeb8923ea7459e3d9630282439c277)
+++ Core/Plugins/src/Core.Plugins.Map/PropertyClasses/IHasMetaData.cs (.../IHasMetaData.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -21,6 +21,7 @@
using System.Collections.Generic;
using Core.Common.Gui.PropertyBag;
+using Core.Plugins.Map.UITypeEditors;
namespace Core.Plugins.Map.PropertyClasses
{
@@ -30,14 +31,14 @@
public interface IHasMetaData : IObjectProperties
{
///
- /// Gets the selected meta data attribute.
+ /// Gets the selectable meta data attribute that is selected.
///
- string SelectedMetaDataAttribute { get; }
+ SelectableMetaDataAttribute SelectedMetaDataAttribute { get; }
///
- /// Return the collection of available meta data attributes.
+ /// Return the collection of available selectable meta data attributes.
///
- /// The collection of available meta data attributes.
- IEnumerable GetAvailableMetaDataAttributes();
+ /// The collection of available selectable meta data attributes.
+ IEnumerable GetAvailableMetaDataAttributes();
}
}
\ No newline at end of file
Index: Core/Plugins/src/Core.Plugins.Map/UITypeEditors/MetaDataAttributeEditor.cs
===================================================================
diff -u -r955a6dc2ceaeb8923ea7459e3d9630282439c277 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/src/Core.Plugins.Map/UITypeEditors/MetaDataAttributeEditor.cs (.../MetaDataAttributeEditor.cs) (revision 955a6dc2ceaeb8923ea7459e3d9630282439c277)
+++ Core/Plugins/src/Core.Plugins.Map/UITypeEditors/MetaDataAttributeEditor.cs (.../MetaDataAttributeEditor.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -30,14 +30,14 @@
/// This class defines a drop down list edit-control from which the user can select a
/// meta data attribute from a collection.
///
- public class MetaDataAttributeEditor : SelectionEditor
+ public class MetaDataAttributeEditor : SelectionEditor
{
- protected override IEnumerable GetAvailableOptions(ITypeDescriptorContext context)
+ protected override IEnumerable GetAvailableOptions(ITypeDescriptorContext context)
{
return GetPropertiesObject(context).GetAvailableMetaDataAttributes();
}
- protected override string GetCurrentOption(ITypeDescriptorContext context)
+ protected override SelectableMetaDataAttribute GetCurrentOption(ITypeDescriptorContext context)
{
return GetPropertiesObject(context).SelectedMetaDataAttribute;
}
Index: Core/Plugins/src/Core.Plugins.Map/UITypeEditors/SelectableMetaDataAttribute.cs
===================================================================
diff -u
--- Core/Plugins/src/Core.Plugins.Map/UITypeEditors/SelectableMetaDataAttribute.cs (revision 0)
+++ Core/Plugins/src/Core.Plugins.Map/UITypeEditors/SelectableMetaDataAttribute.cs (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -0,0 +1,93 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using Core.Components.Gis.Data;
+
+namespace Core.Plugins.Map.UITypeEditors
+{
+ ///
+ /// Class that represents a attribute in the drop down list edit control
+ /// for the .
+ ///
+ public class SelectableMetaDataAttribute
+ {
+ private readonly string metaDataAttribute;
+
+ ///
+ /// Creates a new instance of .
+ ///
+ /// The meta data attribute.
+ /// Thrown when is null.
+ public SelectableMetaDataAttribute(string metaDataAttribute)
+ {
+ if (metaDataAttribute == null)
+ {
+ throw new ArgumentNullException("metaDataAttribute");
+ }
+
+ this.metaDataAttribute = metaDataAttribute;
+ }
+
+ ///
+ /// Gets the meta data attribute.
+ ///
+ public string MetaDataAttribute
+ {
+ get
+ {
+ return metaDataAttribute;
+ }
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj))
+ {
+ return false;
+ }
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+ if (obj.GetType() != GetType())
+ {
+ return false;
+ }
+ return Equals((SelectableMetaDataAttribute)obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return metaDataAttribute.GetHashCode();
+ }
+
+ private bool Equals(SelectableMetaDataAttribute other)
+ {
+ return Equals(metaDataAttribute, other.MetaDataAttribute);
+ }
+
+ public override string ToString()
+ {
+ return metaDataAttribute;
+ }
+ }
+}
\ No newline at end of file
Index: Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj
===================================================================
diff -u -r0d83632a0219af77be977b8dfaed374a0b00998e -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj (.../Core.Plugins.Map.Test.csproj) (revision 0d83632a0219af77be977b8dfaed374a0b00998e)
+++ Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj (.../Core.Plugins.Map.Test.csproj) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -92,6 +92,7 @@
TestView.cs
+
Index: Core/Plugins/test/Core.Plugins.Map.Test/PropertyClasses/FeatureBasedMapDataPropertiesTest.cs
===================================================================
diff -u -r74d2d2f32c99bdd4332710e211a717c9e33cf89e -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/test/Core.Plugins.Map.Test/PropertyClasses/FeatureBasedMapDataPropertiesTest.cs (.../FeatureBasedMapDataPropertiesTest.cs) (revision 74d2d2f32c99bdd4332710e211a717c9e33cf89e)
+++ Core/Plugins/test/Core.Plugins.Map.Test/PropertyClasses/FeatureBasedMapDataPropertiesTest.cs (.../FeatureBasedMapDataPropertiesTest.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -28,6 +28,7 @@
using Core.Components.Gis.Features;
using Core.Components.Gis.Geometries;
using Core.Plugins.Map.PropertyClasses;
+using Core.Plugins.Map.UITypeEditors;
using NUnit.Framework;
using Rhino.Mocks;
@@ -58,7 +59,10 @@
public void Data_SetNewMapPointDataInstance_ReturnCorrectPropertyValues()
{
// Setup
- var mapPointData = new MapPointData("Test");
+ var mapPointData = new MapPointData("Test")
+ {
+ SelectedMetaDataAttribute = string.Empty
+ };
var properties = new TestFeatureBasedMapDataProperties();
// Call
@@ -69,7 +73,7 @@
Assert.AreEqual("Test feature based map data", properties.Type);
Assert.AreEqual(mapPointData.IsVisible, properties.IsVisible);
Assert.AreEqual(mapPointData.ShowLabels, properties.ShowLabels);
- Assert.AreEqual(mapPointData.SelectedMetaDataAttribute, properties.SelectedMetaDataAttribute);
+ Assert.AreEqual(mapPointData.SelectedMetaDataAttribute, properties.SelectedMetaDataAttribute.MetaDataAttribute);
Assert.AreEqual(mapPointData.MetaData, properties.GetAvailableMetaDataAttributes());
}
@@ -160,7 +164,7 @@
// Call
properties.IsVisible = false;
properties.ShowLabels = false;
- properties.SelectedMetaDataAttribute = "ID";
+ properties.SelectedMetaDataAttribute = new SelectableMetaDataAttribute("ID");
// Assert
Assert.IsFalse(mapPointData.IsVisible);
Index: Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/MetaDataAttributeEditorTest.cs
===================================================================
diff -u -r955a6dc2ceaeb8923ea7459e3d9630282439c277 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/MetaDataAttributeEditorTest.cs (.../MetaDataAttributeEditorTest.cs) (revision 955a6dc2ceaeb8923ea7459e3d9630282439c277)
+++ Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/MetaDataAttributeEditorTest.cs (.../MetaDataAttributeEditorTest.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms.Design;
@@ -45,19 +46,14 @@
var editor = new MetaDataAttributeEditor();
// Assert
- Assert.IsInstanceOf>(editor);
+ Assert.IsInstanceOf>(editor);
}
[Test]
public void EditValue_WithCurrentItemNotInAvailableItems_ReturnsOriginalValue()
{
// Setup
- var mapData = new MapPointData("Name");
-
- var properties = new MapPointDataProperties
- {
- Data = mapData
- };
+ var properties = new ObjectPropertiesWithSelectableMetaDataAttribute(CreateSelectableMetaDataAttribute(), new SelectableMetaDataAttribute[0]);
var propertyBag = new DynamicPropertyBag(properties);
var editor = new MetaDataAttributeEditor();
var someValue = new object();
@@ -82,27 +78,14 @@
public void EditValue_WithCurrentItemInAvailableItems_ReturnsCurrentItem()
{
// Setup
- const string newValue = "Test 2";
-
- var feature = new MapFeature(Enumerable.Empty());
- feature.MetaData["Test"] = "test";
- feature.MetaData[newValue] = "test 2";
-
- var mapData = new MapPointData("Name")
+ SelectableMetaDataAttribute selectableMetaDataAttribute = CreateSelectableMetaDataAttribute();
+ var properties = new ObjectPropertiesWithSelectableMetaDataAttribute(selectableMetaDataAttribute, new[]
{
- Features = new[]
- {
- feature
- }
- };
-
- var properties = new MapPointDataProperties
- {
- Data = mapData
- };
+ selectableMetaDataAttribute
+ });
var propertyBag = new DynamicPropertyBag(properties);
var editor = new MetaDataAttributeEditor();
-
+ var someValue = new object();
var mockRepository = new MockRepository();
var serviceProviderStub = mockRepository.Stub();
var serviceStub = mockRepository.Stub();
@@ -112,11 +95,44 @@
mockRepository.ReplayAll();
// Call
- var result = editor.EditValue(descriptorContextStub, serviceProviderStub, newValue);
+ var result = editor.EditValue(descriptorContextStub, serviceProviderStub, someValue);
// Assert
- Assert.AreSame(newValue, result);
+ Assert.AreSame(selectableMetaDataAttribute, result);
mockRepository.VerifyAll();
}
+
+ private static SelectableMetaDataAttribute CreateSelectableMetaDataAttribute()
+ {
+ return new SelectableMetaDataAttribute(string.Empty);
+ }
+
+ private class ObjectPropertiesWithSelectableMetaDataAttribute : IHasMetaData
+ {
+ private readonly SelectableMetaDataAttribute selectableMetaDataAttribute;
+ private readonly IEnumerable selectableMetaDataAttributes;
+
+ public ObjectPropertiesWithSelectableMetaDataAttribute(SelectableMetaDataAttribute selectableMetaDataAttribute,
+ IEnumerable selectableMetaDataAttributes)
+ {
+ this.selectableMetaDataAttribute = selectableMetaDataAttribute;
+ this.selectableMetaDataAttributes = selectableMetaDataAttributes;
+ }
+
+ public object Data { get; set; }
+
+ public SelectableMetaDataAttribute SelectedMetaDataAttribute
+ {
+ get
+ {
+ return selectableMetaDataAttribute;
+ }
+ }
+
+ public IEnumerable GetAvailableMetaDataAttributes()
+ {
+ return selectableMetaDataAttributes;
+ }
+ }
}
}
\ No newline at end of file
Index: Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/SelectableMetaDataAttributeTest.cs
===================================================================
diff -u
--- Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/SelectableMetaDataAttributeTest.cs (revision 0)
+++ Core/Plugins/test/Core.Plugins.Map.Test/UITypeEditors/SelectableMetaDataAttributeTest.cs (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -0,0 +1,181 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using Core.Plugins.Map.UITypeEditors;
+using NUnit.Framework;
+
+namespace Core.Plugins.Map.Test.UITypeEditors
+{
+ [TestFixture]
+ public class SelectableMetaDataAttributeTest
+ {
+ [Test]
+ public void Constructor_MetaDataAttributeNull_ThrowArgumentNullException()
+ {
+ // Call
+ TestDelegate test = () => new SelectableMetaDataAttribute(null);
+
+ // Assert
+ var exception = Assert.Throws(test);
+ Assert.AreEqual("metaDataAttribute", exception.ParamName);
+ }
+
+ [Test]
+ public void Constructor_Expectedvalues()
+ {
+ // Setup
+ var attribute = "Test";
+
+ // Call
+ var selectableAttribute = new SelectableMetaDataAttribute(attribute);
+
+ // Assert
+ Assert.AreEqual(attribute, selectableAttribute.MetaDataAttribute);
+ }
+
+ [Test]
+ public void Equals_ToItself_ReturnTrue()
+ {
+ // Setup
+ var attribute = "Test";
+ var selectableAttribute = new SelectableMetaDataAttribute(attribute);
+
+ // Call
+ bool areEqual = selectableAttribute.Equals(selectableAttribute);
+
+ // Assert
+ Assert.IsTrue(areEqual);
+ }
+
+ [Test]
+ public void Equals_Null_ReturnFalse()
+ {
+ // Setup
+ var attribute = new SelectableMetaDataAttribute(string.Empty);
+
+ // Call
+ bool equals = attribute.Equals(null);
+
+ // Assert
+ Assert.IsFalse(equals);
+ }
+
+ [Test]
+ public void Equals_ToOtherWithSameAttribute_ReturnTrue()
+ {
+ // Setup
+ var attribute = "Test";
+ var selectableAttribute1 = new SelectableMetaDataAttribute(attribute);
+ var selectableAttribute2 = new SelectableMetaDataAttribute(attribute);
+
+ // Call
+ bool equals1 = selectableAttribute1.Equals(selectableAttribute2);
+ bool equals2 = selectableAttribute2.Equals(selectableAttribute1);
+
+ // Assert
+ Assert.IsTrue(equals1);
+ Assert.IsTrue(equals2);
+ }
+
+ [Test]
+ public void Equals_ToOtherWithOtherAttribute_ReturnFalse()
+ {
+ // Setup
+ var selectableAttribute1 = new SelectableMetaDataAttribute("Test");
+ var selectableAttribute2 = new SelectableMetaDataAttribute("Test2");
+
+ // Call
+ bool equals1 = selectableAttribute1.Equals(selectableAttribute2);
+ bool equals2 = selectableAttribute2.Equals(selectableAttribute1);
+
+ // Assert
+ Assert.IsFalse(equals1);
+ Assert.IsFalse(equals2);
+ }
+
+ [Test]
+ public void Equals_OtherObject_ReturnFalse()
+ {
+ // Setup
+ var attribute = new SelectableMetaDataAttribute(string.Empty);
+
+ var otherObject = new object();
+
+ // Call
+ bool equals = attribute.Equals(otherObject);
+
+ // Assert
+ Assert.IsFalse(equals);
+ }
+
+ [Test]
+ public void GetHashCode_EqualObjects_ReturnSameHashCode()
+ {
+ // Setup
+ var attribute = "Test";
+ var selectableAttribute1 = new SelectableMetaDataAttribute(attribute);
+ var selectableAttribute2 = new SelectableMetaDataAttribute(attribute);
+
+ // Pre-condition
+ Assert.IsTrue(selectableAttribute1.Equals(selectableAttribute2));
+
+ // Call
+ int hashCode1 = selectableAttribute1.GetHashCode();
+ int hashCode2 = selectableAttribute2.GetHashCode();
+
+ // Assert
+ Assert.AreEqual(hashCode1, hashCode2);
+ }
+
+ [Test]
+ public void GetHashCode_NotEqualObjects_ReturnDifferentHashCode()
+ {
+ // Setup
+ var selectableAttribute1 = new SelectableMetaDataAttribute("Test");
+ var selectableAttribute2 = new SelectableMetaDataAttribute("Test2");
+
+ // Pre-condition
+ Assert.IsFalse(selectableAttribute1.Equals(selectableAttribute2));
+
+ // Call
+ int hashCode1 = selectableAttribute1.GetHashCode();
+ int hashCode2 = selectableAttribute2.GetHashCode();
+
+ // Assert
+ Assert.AreNotEqual(hashCode1, hashCode2);
+ }
+
+ [Test]
+ public void ToString_Always_ReturnMetaDataAttribute()
+ {
+ // Setup
+ string metaDataAttribute = "Test";
+ var selectableAttribute = new SelectableMetaDataAttribute(metaDataAttribute);
+
+ // Call
+ string toString = selectableAttribute.ToString();
+
+ // Assert
+ Assert.AreEqual(metaDataAttribute, toString);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Forms/UITypeEditors/SelectableHydraulicBoundaryLocation.cs
===================================================================
diff -u -rcc2b4067500d40bf504c7c4b3b076061cc390af4 -r758b0db0a58b0fecd5e3d7d8b5f22d162778ee04
--- Ringtoets/Common/src/Ringtoets.Common.Forms/UITypeEditors/SelectableHydraulicBoundaryLocation.cs (.../SelectableHydraulicBoundaryLocation.cs) (revision cc2b4067500d40bf504c7c4b3b076061cc390af4)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/UITypeEditors/SelectableHydraulicBoundaryLocation.cs (.../SelectableHydraulicBoundaryLocation.cs) (revision 758b0db0a58b0fecd5e3d7d8b5f22d162778ee04)
@@ -118,7 +118,7 @@
private bool Equals(SelectableHydraulicBoundaryLocation other)
{
- return Equals(hydraulicBoundaryLocation, other.hydraulicBoundaryLocation);
+ return Equals(hydraulicBoundaryLocation, other.HydraulicBoundaryLocation);
}
}
}
\ No newline at end of file