2008-06-02 Andy Hume <andyhume32@yahoo.co.uk>
authorIvan Zlatev <ivan@ivanz.com>
Mon, 2 Jun 2008 18:24:34 +0000 (18:24 -0000)
committerIvan Zlatev <ivan@ivanz.com>
Mon, 2 Jun 2008 18:24:34 +0000 (18:24 -0000)
* TextBox.cs: Implement TextBoxAutoCompleteSourceConverter.
* TextBoxTest.cs: Test for TextBoxAutoCompleteSourceConverter.
[Fixes bug 396124]

svn path=/trunk/mcs/; revision=104703

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TextBoxTest.cs

index ad4e4276f20d8ce448c297d50618a6fadd4e03c7..8406ff3a3dd77bf6042afd89394da90e813416fd 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-02  Andy Hume  <andyhume32@yahoo.co.uk>
+
+       * TextBox.cs: Implement TextBoxAutoCompleteSourceConverter.
+       [Fixes bug 396124]
+
 2008-06-02  Ivan N. Zlatev  <contact@i-nz.net>
 
        * GridEntry.cs: Pass the ITypeDescriptorContext everywhere.
index 0f30b3b800ac8644f21c4c707de8f7c9e466a96b..145d9550d165a5a52c2eaab60a14444ea75940d3 100644 (file)
@@ -555,8 +555,23 @@ namespace System.Windows.Forms {
        }
        
 #if NET_2_0
-       internal class TextBoxAutoCompleteSourceConverter : TypeConverter
+       internal class TextBoxAutoCompleteSourceConverter : EnumConverter
        {
+               public TextBoxAutoCompleteSourceConverter(Type type)
+                       : base(type)
+               { }
+
+               public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
+               {
+                       StandardValuesCollection stdv = base.GetStandardValues(context);
+                       AutoCompleteSource[] arr = new AutoCompleteSource[stdv.Count];
+                       stdv.CopyTo(arr, 0);
+                       AutoCompleteSource[] arr2 = Array.FindAll(arr, delegate (AutoCompleteSource value) {
+                               // No "ListItems" in a TextBox.
+                               return value != AutoCompleteSource.ListItems;
+                       });
+                       return new StandardValuesCollection(arr2);
+               }
        }
 #endif
 }
index aef9541dbaf3290d30ff73344e59f4768d90bf8b..8d50ba283293d90c2053583c10f15a90f45f26c6 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-02  Andy Hume  <andyhume32@yahoo.co.uk>
+
+       * TextBoxTest.cs: Test for TextBoxAutoCompleteSourceConverter, 
+        bug 396124.
+
 2008-06-02  Jonathan Pobst  <monkey@jpobst.com>
 
        * TableLayoutTest.cs Add test for bug #396141.
index 8f4006bad608a0c5689a54c717174d6f15fb6d77..07a8e1bfbdaad016b04c1febfa0822d03beb1476 100644 (file)
@@ -869,4 +869,36 @@ namespace MonoTests.System.Windows.Forms
                        }
                }
        }
+
+#if NET_2_0
+       [TestFixture]
+       public class TextBoxAutoCompleteSourceConverterTest
+       {
+               [Test]
+               public void One()
+               {
+                       PropertyDescriptor pd = TypeDescriptor.GetProperties(typeof(TextBox))["AutoCompleteSource"];
+                       TypeConverter converter = pd.Converter;
+                       Assert.AreEqual("System.Windows.Forms.TextBoxAutoCompleteSourceConverter", 
+                               converter.GetType().FullName, "setup--converter type");
+                       Assert.IsTrue(converter.GetStandardValuesSupported(), "GetStandardValuesSupported");
+                       Assert.IsTrue(converter.GetStandardValuesExclusive(), "GetStandardValuesExclusive");
+                       //
+                       global::System.Collections.ICollection list = converter.GetStandardValues();
+                       Assert.AreEqual(8, list.Count, "count");
+                       Object[] arr = new Object[list.Count];
+                       list.CopyTo(arr, 0);
+                       Assert.AreEqual(AutoCompleteSource.FileSystem, arr[0], "item0");
+                       Assert.AreEqual(AutoCompleteSource.HistoryList, arr[1], "item1");
+                       Assert.AreEqual(AutoCompleteSource.RecentlyUsedList, arr[2], "item2");
+                       Assert.AreEqual(AutoCompleteSource.AllUrl, arr[3], "item3");
+                       Assert.AreEqual(AutoCompleteSource.AllSystemSources, arr[4], "item4");
+                       Assert.AreEqual(AutoCompleteSource.FileSystemDirectories, arr[5], "item5");
+                       Assert.AreEqual(AutoCompleteSource.CustomSource, arr[6], "item6");
+                       Assert.AreEqual(AutoCompleteSource.None, arr[7], "item7");
+                       // And NOT AutoCompleteSource.ListItems.
+               }
+
+       }
 }
+#endif