In Test/System.ComponentModel:
[mono.git] / mcs / class / System / System.ComponentModel / PropertyTabAttribute.cs
index 12b6efc7122e6437b4d02066b6b2fc11dd50c6f2..8923ed282abf9bf228bf6647ca11f823505b5a3d 100644 (file)
 // System.ComponentModel.PropertyTabAttribute
 //
 // Authors:
-//      Martin Willemoes Hansen (mwh@sysrq.dk)
+//  Martin Willemoes Hansen (mwh@sysrq.dk)
+//  Andreas Nahr (ClassDevelopment@A-SoftTech.com)
 //
 // (C) 2003 Martin Willemoes Hansen
+// (C) 2003 Andreas Nahr
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
 namespace System.ComponentModel
 {
        [AttributeUsage(AttributeTargets.All)]
-        public class PropertyTabAttribute : Attribute
+       public class PropertyTabAttribute : Attribute
        {
-               [MonoTODO]
+
+               private Type[] tabs;
+               private PropertyTabScope[] scopes;
+
+
                public PropertyTabAttribute()
                {
+                       tabs = null;
+                       scopes = null;
                }
 
-               [MonoTODO]
                public PropertyTabAttribute (string tabClassName)
                {
+                       string[] tabArray = {tabClassName};
+                       this.InitializeArrays (tabArray, null);
                }
 
-               [MonoTODO]
                public PropertyTabAttribute (Type tabClass)
                {
+                       Type[] tabArray = {tabClass};
+                       this.InitializeArrays (tabArray, null);
                }
 
-               [MonoTODO]
-               public PropertyTabAttribute (string tabClassName, 
-                                            PropertyTabScope tabScope)
+               public PropertyTabAttribute (string tabClassName, PropertyTabScope tabScope)
                {
+                       string[] tabArray = {tabClassName};
+                       PropertyTabScope[] scopeArray = {tabScope};
+                       this.InitializeArrays (tabArray, scopeArray);
                }
 
-               [MonoTODO]
-               public PropertyTabAttribute (Type tabClass,
-                                            PropertyTabScope tabScope)
+               public PropertyTabAttribute (Type tabClass, PropertyTabScope tabScope)
                {
+                       Type[] tabArray = {tabClass};
+                       PropertyTabScope[] scopeArray = {tabScope};
+                       this.InitializeArrays (tabArray, scopeArray);
                }
 
                public Type[] TabClasses {
-                       [MonoTODO]
-                       get { throw new NotImplementedException(); }
+                       get { return tabs; }
                }
 
                public PropertyTabScope[] TabScopes {
-                       [MonoTODO]
-                       get { throw new NotImplementedException(); }
+                       get { return scopes; }
                }
 
-               [MonoTODO]
                public override bool Equals (object other)
                {
-                       throw new NotImplementedException();
+                       if (!(other is PropertyTabAttribute))
+                               return false;
+                       if (other == this)
+                               return true;
+                       return ((PropertyTabAttribute) other).TabClasses == tabs &&
+                               ((PropertyTabAttribute) other).TabScopes == scopes;
                }
 
-               [MonoTODO]
                public bool Equals (PropertyTabAttribute other)
                {
-                       throw new NotImplementedException();
+                       return this.Equals ((object) other);
                }
 
-               [MonoTODO]
                public override int GetHashCode()
                {
-                       throw new NotImplementedException();
+                       // FIXME check if other Hashcode is needed
+                       return base.GetHashCode ();
                }
 
                protected string[] TabClassNames {
-                       [MonoTODO]
-                       get { throw new NotImplementedException(); }
+                       get {
+                               // FIXME untested, maybe wrong
+                               string[] tabClassName = (string[]) (Array.CreateInstance (typeof (string), tabs.Length));
+                               for (int x = 0; x < tabs.Length; x++)
+                                       tabClassName[x] = tabs[x].AssemblyQualifiedName;
+                               return tabClassName;
+                       }
                }
 
-               [MonoTODO]
-               protected void InitializeArrays (string[] tabClassNames,
-                                                PropertyTabScope[] tabScopes)
+               protected void InitializeArrays (string[] tabClassNames, PropertyTabScope[] tabScopes)
                {
-                       throw new NotImplementedException();
-               }
+                       // FIXME untested, maybe wrong
+                       Type[] tabClasses = (Type[]) (Array.CreateInstance (typeof (Type), tabClassNames.Length));
+                       for (int x = 0; x < tabClassNames.Length; x++)
+                               tabClasses[x] = Type.GetType (tabClassNames[x], false);
 
-               [MonoTODO]
-               protected void InitializeArrays (Type[] tabClasses,
-                                                PropertyTabScope[] tabScopes)
-               {
-                       throw new NotImplementedException();
+                       tabs = tabClasses;
+                       scopes = tabScopes;
                }
 
-               [MonoTODO]
-               ~PropertyTabAttribute()
+               protected void InitializeArrays (Type[] tabClasses, PropertyTabScope[] tabScopes)
                {
+                       // FIXME untested, maybe wrong
+                       tabs = tabClasses;
+                       scopes = tabScopes;
                }
        }
 }