2005-09-20 Chris Toshok <toshok@ximian.com>
[mono.git] / mcs / class / System / System.Configuration / SettingsPropertyValueCollection.cs
1 //
2 // System.Web.UI.WebControls.SettingsPropertyValueCollection.cs
3 //
4 // Authors:
5 //      Chris Toshok (toshok@ximian.com)
6 //
7 // (C) 2005 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 #if NET_2_0
30 using System;
31 using System.Collections;
32 using System.Configuration.Provider;
33
34 namespace System.Configuration
35 {
36
37         public class SettingsPropertyValueCollection : ICloneable, ICollection, IEnumerable
38         {
39                 Hashtable items;
40                 bool isReadOnly;
41
42                 public SettingsPropertyValueCollection ()
43                 {
44                         items = new Hashtable();
45                 }
46
47                 public void Add (SettingsPropertyValue property)
48                 {
49                         if (isReadOnly)
50                                 throw new NotSupportedException ();
51
52                         /* actually do the add */
53                         items.Add (property.Name, property);
54                 }
55
56                 internal void Add (SettingsPropertyValueCollection vals)
57                 {
58                         foreach (SettingsPropertyValue val in vals) {
59                                 Add (val);
60                         }
61                 }
62
63                 public void Clear ()
64                 {
65                         if (isReadOnly)
66                                 throw new NotSupportedException ();
67
68                         items.Clear ();
69                 }
70
71                 public object Clone ()
72                 {
73                         SettingsPropertyValueCollection col = new SettingsPropertyValueCollection ();
74                         col.items = (Hashtable)items.Clone ();
75
76                         return col;
77                 }
78
79                 public void CopyTo (Array array, int index)
80                 {
81                         items.Values.CopyTo (array, index);
82                 }
83
84                 public IEnumerator GetEnumerator ()
85                 {
86                         return items.Values.GetEnumerator();
87                 }
88
89                 public void Remove (string name)
90                 {
91                         if (isReadOnly)
92                                 throw new NotSupportedException ();
93
94                         items.Remove (name);
95                 }
96
97                 public void SetReadOnly ()
98                 {
99                         isReadOnly = true;
100                 }
101
102                 public int Count {
103                         get {
104                                 return items.Count;
105                         }
106                 }
107
108                 public bool IsSynchronized {
109                         get {
110                                 throw new NotImplementedException ();
111                         }
112                 }
113
114                 public SettingsPropertyValue this [ string name ] {
115                         get {
116                                 return (SettingsPropertyValue) items [ name ];
117                         }
118                 }
119
120                 public object SyncRoot {
121                         get {
122                                 throw new NotImplementedException ();
123                         }
124                 }
125         }
126
127 }
128
129 #endif