Merge pull request #3018 from ludovic-henry/coop-marshal-attach
[mono.git] / mcs / class / System.Windows.Forms / System.Windows.Forms / NumericUpDownAccelerationCollection.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 //      Andreia Gaita (avidigal@novell.com)\r
24 \r
25 \r
26 using System;\r
27 using System.Collections;\r
28 using System.ComponentModel;\r
29 using System.Collections.Generic;\r
30 \r
31 namespace System.Windows.Forms\r
32 {\r
33         [ListBindable (false)]\r
34         public class NumericUpDownAccelerationCollection : MarshalByRefObject, ICollection<NumericUpDownAcceleration>, \r
35                 IEnumerable<NumericUpDownAcceleration>, IEnumerable\r
36         {\r
37                 #region Fields\r
38                 private List<NumericUpDownAcceleration> items;\r
39                 #endregion\r
40 \r
41                 #region Properties\r
42                 public int Count {\r
43                         get { return items.Count; }\r
44                 }\r
45 \r
46                 public bool IsReadOnly {\r
47                         get { return false; }\r
48                 }\r
49 \r
50                 public NumericUpDownAcceleration this[int index] {\r
51                         get { return items[index]; }\r
52                 }\r
53                 #endregion\r
54 \r
55                 #region Constructor\r
56                 public NumericUpDownAccelerationCollection ()\r
57                 {\r
58                         items = new List<NumericUpDownAcceleration> ();\r
59                 }\r
60                 #endregion\r
61 \r
62                 #region Public Methods\r
63                 public void Add (NumericUpDownAcceleration acceleration)\r
64                 {\r
65                         if (acceleration == null)\r
66                                 throw new ArgumentNullException ("Acceleration cannot be null");\r
67 \r
68                         int i = 0;\r
69                         for (; i < items.Count; i++) {\r
70                                 if (acceleration.Seconds < items[i].Seconds)\r
71                                         break;\r
72                         }\r
73                         items.Insert (i, acceleration);\r
74                 }\r
75 \r
76                 public void AddRange (params NumericUpDownAcceleration[] accelerations)\r
77                 {\r
78                         for (int i = 0; i < accelerations.Length; i++)\r
79                                 Add (accelerations [i]);\r
80                 }\r
81 \r
82                 public void Clear ()\r
83                 {\r
84                         items.Clear ();\r
85                 }\r
86 \r
87                 public bool Contains (NumericUpDownAcceleration acceleration)\r
88                 {\r
89                         return items.Contains (acceleration);\r
90                 }\r
91 \r
92                 public void CopyTo (NumericUpDownAcceleration[] array, int index)\r
93                 {\r
94                         items.CopyTo (array, index);\r
95                 }\r
96 \r
97                 public bool Remove (NumericUpDownAcceleration acceleration)\r
98                 {\r
99                         return items.Remove (acceleration);\r
100                 }\r
101 \r
102                 IEnumerator<NumericUpDownAcceleration> IEnumerable<NumericUpDownAcceleration>.GetEnumerator ()\r
103                 {\r
104                         return items.GetEnumerator ();\r
105                 }\r
106 \r
107                 IEnumerator IEnumerable.GetEnumerator ()\r
108                 {\r
109                         return items.GetEnumerator ();\r
110                 }\r
111                 #endregion\r
112         }\r
113 }\r