Merge pull request #1275 from ranma42/fix-lib64
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ImageKeyConverter.cs
1 // Permission is hereby granted, free of charge, to any person obtaining\r
2 // a copy of this software and associated documentation files (the\r
3 // "Software"), to deal in the Software without restriction, including\r
4 // without limitation the rights to use, copy, modify, merge, publish,\r
5 // distribute, sublicense, and/or sell copies of the Software, and to\r
6 // permit persons to whom the Software is furnished to do so, subject to\r
7 // the following conditions:\r
8 // \r
9 // The above copyright notice and this permission notice shall be\r
10 // included in all copies or substantial portions of the Software.\r
11 // \r
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
19 //\r
20 // Copyright (c) 2007 Novell, Inc.\r
21 //\r
22 // Authors:\r
23 //   Jonathan Pobst  monkey@jpobst.com\r
24 //\r
25 \r
26 using System.Drawing;\r
27 using System.ComponentModel;\r
28 using System.Collections;\r
29 using System.Diagnostics;\r
30 using System.Globalization;\r
31 using System.Runtime.InteropServices;\r
32 \r
33 namespace System.Windows.Forms\r
34 {\r
35         public class ImageKeyConverter : StringConverter\r
36         {\r
37                 #region Constructors\r
38                 public ImageKeyConverter () { }\r
39                 #endregion Constructors\r
40 \r
41                 #region Protected Properties\r
42                 protected virtual bool IncludeNoneAsStandardValue {\r
43                         get { return true; }\r
44                 }\r
45                 #endregion Protected Properties\r
46 \r
47                 #region Public Methods\r
48                 public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)\r
49                 {\r
50                         if (sourceType == typeof (string))\r
51                                 return true;\r
52 \r
53                         return false;\r
54                 }\r
55                 \r
56                 public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)\r
57                 {\r
58                         if (value != null && value is string)\r
59                                 return (string) value;\r
60                         else\r
61                                 return base.ConvertFrom (context, culture, value);\r
62                 }\r
63 \r
64                 public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture,\r
65                                                   object value, Type destinationType)\r
66                 {\r
67                         if (value == null)\r
68                                 return "(none)";\r
69                         else if (destinationType == typeof (string)) {\r
70                                 if (value is string && (string) value == string.Empty)\r
71                                         return "(none)";\r
72                                 else\r
73                                         return value.ToString ();\r
74                         }\r
75                         else\r
76                                 return base.ConvertTo (context, culture, value, destinationType);\r
77                 }\r
78 \r
79                 public override StandardValuesCollection GetStandardValues (ITypeDescriptorContext context)\r
80                 {\r
81                         string[] stdVal = new string[] { string.Empty };\r
82                         return new TypeConverter.StandardValuesCollection (stdVal);\r
83                 }\r
84 \r
85                 public override bool GetStandardValuesExclusive (ITypeDescriptorContext context)\r
86                 {\r
87                         return true;\r
88                 }\r
89 \r
90                 public override bool GetStandardValuesSupported (ITypeDescriptorContext context)\r
91                 {\r
92                         return true;\r
93                 }\r
94                 #endregion Public Methods\r
95         }\r
96 }\r