2007-06-04 Jonathan Pobst <monkey@jpobst.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / TableLayoutStyleCollection.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 //
21 // Author:
22 //   Miguel de Icaza (miguel@gnome.org)
23 //
24 // Copyright 2004-2006 Novell, Inc.
25 //
26
27 #if NET_2_0
28 using System;
29 using System.ComponentModel;
30 using System.Collections;
31 using System.Windows.Forms.Layout;
32
33 namespace System.Windows.Forms {
34
35         public abstract class TableLayoutStyleCollection : IList, ICollection, IEnumerable {
36                 ArrayList al = new ArrayList ();
37                 TableLayoutPanel table;
38                 
39                 internal TableLayoutStyleCollection (TableLayoutPanel table)
40                 {
41                         this.table = table;
42                 }
43                 
44                 public int Add (TableLayoutStyle style)
45                 {
46                         return al.Add (style);
47                 }
48                 
49                 public void Clear ()
50                 {
51                         al.Clear ();
52                         
53                         // FIXME: Need to investigate what happens when the style is gone.
54                         table.PerformLayout ();
55                 }
56                 
57                 public int Count {
58                         get { return al.Count; }
59                 }
60                 
61                 public void RemoveAt (int index)
62                 {
63                         al.RemoveAt (index);
64                 }
65                 
66 #region IList methods
67                 //
68                 // The IList methods will later be implemeneted, this is to get us started
69                 //
70                 int IList.Add (object style)
71                 {
72                         return al.Add ((TableLayoutStyle) style);
73                 }
74                 
75                 bool IList.Contains (object style)
76                 {
77                         return al.Contains ((TableLayoutStyle) style);
78                 }
79                 
80                 int IList.IndexOf (object style)
81                 {
82                         return al.IndexOf ((TableLayoutStyle) style);
83                 }
84                 
85                 void IList.Insert (int index, object style)
86                 {
87                         al.Insert (index, (TableLayoutStyle) style);
88                 }
89
90                 void IList.Remove (object style)
91                 {
92                         al.Remove ((TableLayoutStyle) style);
93                 }
94
95                 void IList.RemoveAt (int pos)
96                 {
97                         al.RemoveAt (pos);
98                 }
99
100                 bool IList.IsFixedSize {
101                         get {
102                                 return al.IsFixedSize;
103                         }
104                 }
105
106                 bool IList.IsReadOnly {
107                         get {
108                                 return al.IsReadOnly;
109                         }
110                 }
111
112                 object IList.this [int index] {
113                         get {
114                                 return al [index];
115                         }
116                         set {
117                                 al [index] = value;
118                         }
119                 }
120 #endregion
121
122 #region ICollection methods
123                 void ICollection.CopyTo (Array array, int startIndex)
124                 {
125                         al.CopyTo (array, startIndex);
126                 }
127
128                 object ICollection.SyncRoot {
129                         get {
130                                 return al.SyncRoot;
131                         }
132                 }
133
134                 bool ICollection.IsSynchronized {
135                         get {
136                                 return al.IsSynchronized;
137                         }
138                 }
139
140                 int ICollection.Count {
141                         get {
142                                 return al.Count;
143                         }
144                 }
145 #endregion
146
147 #region IEnumerable methods
148                 IEnumerator IEnumerable.GetEnumerator ()
149                 {
150                         return al.GetEnumerator ();
151                 }
152 #endregion
153                 public TableLayoutStyle this [int idx] {
154                         get {
155                                 return (TableLayoutStyle) al [idx];
156                         }
157
158                         set {
159                                 al [idx] = value;
160                         }
161                 }
162         }
163                 
164 }       
165 #endif