2004-06-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[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.Collections;\r
17 using System.Web;\r
18 using System.Web.UI;\r
19 \r
20 namespace System.Web.UI.WebControls\r
21 {\r
22         public class ValidatedControlConverter : StringConverter\r
23         {\r
24                 public ValidatedControlConverter(): base()\r
25                 {\r
26                 }\r
27 \r
28                 private object[] GetValues(IContainer container)\r
29                 {\r
30                         ArrayList values = new ArrayList();\r
31                         IEnumerator ie = container.Components.GetEnumerator();\r
32                         try\r
33                         {\r
34                                 foreach(IComponent current in container.Components)\r
35                                 {\r
36                                         Control ctrl = (Control)current;\r
37                                         if(ctrl == null || ctrl.ID == null || ctrl.ID.Length == 0)\r
38                                                 continue;\r
39                                         ValidationPropertyAttribute attrib = (ValidationPropertyAttribute)((TypeDescriptor.GetAttributes(ctrl))[typeof(ValidationPropertyAttribute)]);\r
40                                         if(attrib == null || attrib.Name == null)\r
41                                                 continue;\r
42                                         values.Add(String.Copy(ctrl.ID));\r
43                                 }\r
44                         }finally\r
45                         {\r
46                                 if(ie is IDisposable)\r
47                                         ((IDisposable)ie).Dispose();\r
48                         }\r
49                         values.Sort();\r
50                         return values.ToArray();\r
51                 }\r
52 \r
53                 public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)\r
54                 {\r
55                         if(context != null && context.Container != null)\r
56                         {\r
57                                 object[] values = GetValues(context.Container);\r
58                                 if(values != null)\r
59                                 {\r
60                                         return new StandardValuesCollection(values);\r
61                                 }\r
62                         }\r
63                         return null;\r
64                 }\r
65 \r
66                 public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)\r
67                 {\r
68                         return false;\r
69                 }\r
70 \r
71                 public override bool GetStandardValuesSupported(ITypeDescriptorContext context)\r
72                 {\r
73                         return true;\r
74                 }\r
75         }\r
76 }\r