2002-01-30 Gaurav Vaish <gvaish@iitk.ac.in>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / ValidatedControlConverter.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     ValidatedControlConverter\r
4  * \r
5  * Author:  Gaurav Vaish\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8  * Implementation: yes\r
9  * Status:  100%\r
10  * \r
11  * (C) Gaurav Vaish (2002)\r
12  */\r
13 \r
14 using System;\r
15 using System.ComponentModel;\r
16 using System.Web;\r
17 using System.Web.UI;\r
18 \r
19 namespace System.Web.UI.WebControls\r
20 {\r
21         public class ValidatedControlConverter : StringConverter\r
22         {\r
23                 public ValidatedControlConverter(): base()\r
24                 {\r
25                 }\r
26                 \r
27                 private object[] GetValues(IContainer container)\r
28                 {\r
29                         ArrayList values = new ArrayList();\r
30                         IEnumerator ie = container.Components.GetEnumerator();\r
31                         try\r
32                         {\r
33                                 foreach(IComponent current in container.Components)\r
34                                 {\r
35                                         Control ctrl = (Control)current;\r
36                                         if(ctrl == null || ctrl.ID == null || ctrl.ID.Length == 0)\r
37                                                 continue;\r
38                                         ValidationPropertyAttribute attrib = (ValidationPropertyAttribute)((TypeDescriptor.GetAttributes(ctrl))[typeof(ValidationPropertyAttribute)]);\r
39                                         if(attrib == null || attrib.Name == null)\r
40                                                 continue;\r
41                                         values.Add(String.Copy(ctrl.ID));\r
42                                 }\r
43                         }finally\r
44                         {\r
45                                 if(ie is IDisposable)\r
46                                         ie.Dispose();\r
47                         }\r
48                         values.Sort();\r
49                         return values.ToArray();\r
50                 }\r
51 \r
52                 public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)\r
53                 {\r
54                         if(context != null && context.Container != null)\r
55                         {\r
56                                 object[] values = GetValues(context.Container);\r
57                                 if(values != null)\r
58                                 {\r
59                                         return new StandardValuesCollection(values);\r
60                                 }\r
61                         }\r
62                         return null;\r
63                 }\r
64 \r
65                 public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)\r
66                 {\r
67                         return false;\r
68                 }\r
69                 \r
70                 public override bool GetStandardValuesSupported(ITypeDescriptorContext context)\r
71                 {\r
72                         return true;\r
73                 }\r
74         }\r
75 }\r