Browse Source

2007-01-26 Jonathan Pobst <[email protected]>

	* PaddingConverter.cs: Added.
	* PaddingConverterTest.cs: Added.

svn path=/trunk/mcs/; revision=71758
Jonathan Pobst 19 years ago
parent
commit
ffef47b323

+ 5 - 0
mcs/class/Managed.Windows.Forms/ChangeLog

@@ -1,3 +1,8 @@
+2007-01-26  Jonathan Pobst  <[email protected]>
+
+	* System.Windows.Forms.dll.sources: Add PaddingConverter.cs.
+	* System.Windows.Forms_test.dll.sources: Add PaddingConverterTest.cs.
+
 2007-01-25  Chris Toshok  <[email protected]>
 
 	* System.Windows.Forms_test.dll.sources: add SplitterTest.cs

+ 1 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources

@@ -474,6 +474,7 @@ System.Windows.Forms/OpenTreeNodeEnumerator.cs
 System.Windows.Forms/Orientation.cs
 System.Windows.Forms/OwnerDrawPropertyBag.cs
 System.Windows.Forms/Padding.cs
+System.Windows.Forms/PaddingConverter.cs
 System.Windows.Forms/PageSetupDialog.cs
 System.Windows.Forms/PaintEventArgs.cs
 System.Windows.Forms/PaintEventHandler.cs

+ 4 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog

@@ -1,3 +1,7 @@
+2007-01-26  Jonathan Pobst  <[email protected]>
+
+	* PaddingConverter.cs: Added.
+
 2007-01-26  Rolf Bjarne Kvinge  <[email protected]>
 	
 	* ThemeWin32Classic.cs: Only draw the text of a StatusBar if

+ 103 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/PaddingConverter.cs

@@ -0,0 +1,103 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+#if NET_2_0
+
+using System.ComponentModel;
+using System.Collections;
+using System.Reflection;
+using System.Globalization;
+
+namespace System.Windows.Forms
+{
+	public class PaddingConverter : TypeConverter
+	{
+		public PaddingConverter ()
+		{
+		}
+
+		#region Public Instance Methods
+		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+		{
+			if (sourceType == typeof (string))
+				return true;
+				
+			return false;
+		}
+
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			if (destinationType == typeof (string))
+				return true;
+
+			return false;
+		}
+
+		public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+		{
+			if ((value == null) || !(value is String))
+				return base.ConvertFrom (context, culture, value);
+
+			if (culture == null)
+				culture = CultureInfo.CurrentCulture;
+
+			string[] parts = ((string)value).Split (culture.TextInfo.ListSeparator.ToCharArray ());
+
+			return new Padding (int.Parse (parts[0].Trim ()), int.Parse (parts[1].Trim ()), int.Parse (parts[2].Trim ()), int.Parse (parts[3].Trim ()));
+		}
+
+		public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+		{
+			if ((value == null) || !(value is Padding) || (destinationType != typeof(string)))
+				return base.ConvertTo (context, culture, value, destinationType);
+
+			if (culture == null)
+				culture = CultureInfo.CurrentCulture;
+
+			Padding p = (Padding)value;
+
+			return string.Format ("{0}{4} {1}{4} {2}{4} {3}", p.Left, p.Top, p.Right, p.Bottom, culture.TextInfo.ListSeparator);
+		}
+
+		public override object CreateInstance (ITypeDescriptorContext context, IDictionary propertyValues)
+		{
+			return new Padding ((int)propertyValues["Left"], (int)propertyValues["Top"], (int)propertyValues["Right"], (int)propertyValues["Bottom"]);
+		}
+		
+		public override bool GetCreateInstanceSupported (ITypeDescriptorContext context)
+		{
+			return true;
+		}
+
+		public override PropertyDescriptorCollection GetProperties (ITypeDescriptorContext context, object value, Attribute[] attributes)
+		{
+			return TypeDescriptor.GetProperties (typeof (Padding), attributes);
+		}
+		
+		public override bool GetPropertiesSupported (ITypeDescriptorContext context)
+		{
+			return true;
+		}
+		#endregion
+	}
+}
+#endif

+ 1 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources

@@ -67,6 +67,7 @@ System.Windows.Forms/MenuItemTest.cs
 System.Windows.Forms/MonthCalendarTest.cs
 System.Windows.Forms/NotifyIconTest.cs
 System.Windows.Forms/PaddingTest.cs
+System.Windows.Forms/PaddingConverterTest.cs
 System.Windows.Forms/PaintEventArgsTest.cs
 System.Windows.Forms/PictureBoxTest.cs
 System.Windows.Forms/PrintDialogTest.cs

+ 4 - 0
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog

@@ -1,3 +1,7 @@
+2007-01-26  Jonathan Pobst  <[email protected]>
+
+	* PaddingConverterTest.cs: Added.
+
 2007-01-26  Rolf Bjarne Kvinge  <[email protected]>
 
 	* StatusBarTest.cs: Added a few more tests.

+ 91 - 0
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/PaddingConverterTest.cs

@@ -0,0 +1,91 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Novell, Inc.
+//
+
+#if NET_2_0
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class PaddingConverterTest
+	{
+		[Test]
+		public void CanConvertFrom ()
+		{
+			PaddingConverter c = new PaddingConverter ();
+
+			Assert.IsTrue (c.CanConvertFrom (null, typeof (string)), "1");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (int)), "2");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (float)), "3");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (object)), "4");
+		}
+
+		[Test]
+		public void CanConvertTo ()
+		{
+			PaddingConverter c = new PaddingConverter ();
+
+			Assert.IsTrue (c.CanConvertTo (null, typeof (string)), "1");
+			Assert.IsFalse (c.CanConvertTo (null, typeof (int)), "2");
+			Assert.IsFalse (c.CanConvertTo (null, typeof (float)), "3");
+			Assert.IsFalse (c.CanConvertTo (null, typeof (object)), "4");
+		}
+
+		[Test]
+		public void ConvertTo ()
+		{
+			PaddingConverter pc = new PaddingConverter ();
+
+			Assert.AreEqual ("1, 2, 3, 4", (string)pc.ConvertTo (new Padding (1, 2, 3, 4), typeof (string)), "A1");
+			Assert.AreEqual ("1, 1, 1, 1", (string)pc.ConvertTo (new Padding (1), typeof (string)), "A2");
+			Assert.AreEqual ("0, 0, 0, 0", (string)pc.ConvertTo (Padding.Empty, typeof (string)), "A3");
+		}
+
+		[Test]
+		public void ConvertFrom ()
+		{
+			PaddingConverter pc = new PaddingConverter ();
+
+			Assert.AreEqual (new Padding (1, 2, 3, 4), pc.ConvertFrom ("1, 2, 3, 4"), "A1");
+			Assert.AreEqual (new Padding (1, 2, 3, 4), pc.ConvertFrom ("1,2,3,4"), "A2");
+			Assert.AreEqual (new Padding (1, 2, 3, 4), pc.ConvertFrom ("1,  2,  3,  4"), "A3");
+			Assert.AreEqual (new Padding (1), pc.ConvertFrom ("1, 1, 1, 1"), "A4");
+			Assert.AreEqual (new Padding (), pc.ConvertFrom ("0, 0, 0, 0"), "A5");
+		}
+		
+		[Test]
+		public void CreateInstanceSupported ()
+		{
+			PaddingConverter pc = new PaddingConverter ();
+			
+			Assert.AreEqual (true, pc.GetCreateInstanceSupported (null), "A1");
+			Assert.AreEqual (true, pc.GetPropertiesSupported (null), "A2");
+		}
+	}
+}
+#endif