* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System / System.ComponentModel / ToolboxItemAttribute.cs
1 //
2 // System.ComponentModel.ToolboxItemAttribute
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
8 //
9
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31 using System;
32
33 namespace System.ComponentModel
34 {
35         [AttributeUsage(AttributeTargets.All)]
36         public class ToolboxItemAttribute : Attribute
37         {
38                 private const string defaultItemType = "System.Drawing.Design.ToolboxItem, " + Consts.AssemblySystem_Drawing;
39                 public static readonly ToolboxItemAttribute Default = new ToolboxItemAttribute (defaultItemType);
40                 public static readonly ToolboxItemAttribute None = new ToolboxItemAttribute (false);
41
42                 private Type itemType;
43                 private string itemTypeName;
44
45                 public ToolboxItemAttribute (bool defaultType)
46                 {
47                         if (defaultType)
48                                 itemTypeName = defaultItemType;
49                 }
50
51                 public ToolboxItemAttribute (string toolboxItemName)
52                 {
53                         itemTypeName = toolboxItemName;
54                 }
55
56                 public ToolboxItemAttribute (Type toolboxItemType)
57                 {
58                         itemType = toolboxItemType;
59                 }
60
61                 public Type ToolboxItemType
62                 {
63                         get {
64                                 if (itemType == null && itemTypeName != null)
65                                         try {
66                                                 itemType = Type.GetType (itemTypeName, true);
67                                         } catch (Exception ex) {
68                                                 throw new ArgumentException ("Failed to create ToolboxItem of type: "
69                                                         + itemTypeName, ex);
70                                         }
71                                 return itemType;
72                         }
73                 }
74                 
75                 public string ToolboxItemTypeName
76                 {
77                         get {
78                                 if (itemTypeName == null) {
79                                         if (itemType == null)
80                                                 return string.Empty;
81                                         itemTypeName = itemType.AssemblyQualifiedName;
82                                 }
83
84                                 return itemTypeName;
85                         }
86                 }
87                 
88                 public override bool Equals (object o)
89                 {
90                         ToolboxItemAttribute item = o as ToolboxItemAttribute;
91
92                         if (item == null)
93                                 return false;
94
95                         return (item.ToolboxItemTypeName == ToolboxItemTypeName);
96                 }
97
98                 public override int GetHashCode ()
99                 {
100                         if (itemTypeName != null) {
101                                 return itemTypeName.GetHashCode ();
102                         }
103
104                         return base.GetHashCode ();
105                 }
106
107                 public override bool IsDefaultAttribute ()
108                 {
109                         return Equals (Default);
110                 }
111         }
112 }
113