* PagedDataSource.cs (PrivateICollectionEnumerator.MoveNext):
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / FontUnitConverter.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     FontUnitConverter\r
4  *\r
5  * Author:  Gaurav Vaish, Gonzalo Paniagua Javier\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>, <gonzalo@ximian.com>\r
8  * Implementation: yes\r
9  * Status: 95%\r
10  *\r
11  * (C) Gaurav Vaish (2002)\r
12  * (c) 2002 Ximian, Inc. (http://www.ximian.com)\r
13  */\r
14 \r
15 using System;\r
16 using System.Globalization;\r
17 using System.ComponentModel;\r
18 using System.Web;\r
19 using System.Web.UI;\r
20 \r
21 namespace System.Web.UI.WebControls\r
22 {\r
23         public class FontUnitConverter : TypeConverter\r
24         {\r
25                 static StandardValuesCollection valuesCollection;\r
26                 static string creatingValues = "creating value collection";\r
27 \r
28                 public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)\r
29                 {\r
30                         if(sourceType == typeof(string))\r
31                                 return true;\r
32                         return base.CanConvertFrom(context, sourceType);\r
33                 }\r
34 \r
35                 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)\r
36                 {\r
37                         if(value == null)\r
38                                 return null;\r
39                         if(value is string)\r
40                         {\r
41                                 string val = ((string)value).Trim();\r
42                                 if(val.Length == 0)\r
43                                 {\r
44                                         return FontUnit.Empty;\r
45                                 }\r
46                                 return FontUnit.Parse(val, culture);\r
47                         }\r
48                         return base.ConvertFrom(context, culture, value);\r
49                 }\r
50 \r
51                 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)\r
52                 {\r
53                         if(value != null && value is FontUnit)\r
54                         {\r
55                                 FontUnit val = (FontUnit)value;\r
56                                 if(val.Type == FontSize.NotSet)\r
57                                 {\r
58                                         return String.Empty;\r
59                                 }\r
60                                 return val.ToString(culture);\r
61                         }\r
62                         return base.ConvertTo(context, culture, value, destinationType);\r
63                 }\r
64 \r
65                 public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)\r
66                 {\r
67                         if (valuesCollection != null)\r
68                                 return valuesCollection;\r
69 \r
70                         lock (creatingValues) {\r
71                                 if (valuesCollection != null)\r
72                                         return valuesCollection;\r
73 \r
74                                 Array values = Enum.GetValues (typeof (FontUnit));\r
75                                 Array.Sort (values);\r
76                                 valuesCollection = new StandardValuesCollection (values);\r
77                         }\r
78 \r
79                         return valuesCollection;\r
80                 }\r
81 \r
82                 public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)\r
83                 {\r
84                         return false;\r
85                 }\r
86 \r
87                 public override bool GetStandardValuesSupported(ITypeDescriptorContext context)\r
88                 {\r
89                         return true;\r
90                 }\r
91         }\r
92 }\r