* Parameter.cs:
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / ListItemCollection.cs
index d8b2829f55ad7b41f6d64f09dc8cf1a01e5f917e..3fdf3a8cb7c4417b96142e657fe0fd50c2fb8a7a 100644 (file)
@@ -15,22 +15,25 @@ using System;
 using System.Collections;\r
 using System.Web;\r
 using System.Web.UI;\r
+using System.ComponentModel;\r
+using System.Reflection;\r
 \r
 namespace System.Web.UI.WebControls\r
-{\r
-       public class ListItemCollection : IList, ICollection, IEnumerable, IStateManager\r
+{
+       [Editor ("System.Web.UI.Design.WebControls.ListItemsCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]\r
+       public sealed class ListItemCollection : IList, ICollection, IEnumerable, IStateManager\r
        {\r
                private ArrayList items;\r
                private bool      saveAll;\r
                private bool      marked;\r
-               \r
+\r
                public ListItemCollection()\r
                {\r
                        items   = new ArrayList();\r
                        saveAll = false;\r
                        marked  = false;\r
                }\r
-               \r
+\r
                public int Capacity\r
                {\r
                        get\r
@@ -42,7 +45,7 @@ namespace System.Web.UI.WebControls
                                items.Capacity = value;\r
                        }\r
                }\r
-               \r
+\r
                public int Count\r
                {\r
                        get\r
@@ -50,7 +53,7 @@ namespace System.Web.UI.WebControls
                                return items.Count;\r
                        }\r
                }\r
-               \r
+\r
                public bool IsReadOnly\r
                {\r
                        get\r
@@ -58,7 +61,7 @@ namespace System.Web.UI.WebControls
                                return items.IsReadOnly;\r
                        }\r
                }\r
-               \r
+\r
                public bool IsSynchronized\r
                {\r
                        get\r
@@ -66,7 +69,7 @@ namespace System.Web.UI.WebControls
                                return items.IsSynchronized;\r
                        }\r
                }\r
-               \r
+\r
                public ListItem this[int index]\r
                {\r
                        get\r
@@ -74,14 +77,9 @@ namespace System.Web.UI.WebControls
                                if(index < 0 || index >= Count)\r
                                        return null;\r
                                return (ListItem)(items[index]);\r
-                       }\r
-                       set\r
-                       {\r
-                               if(index >= 0 && index < Count)\r
-                                       items[index] = value;\r
-                       }\r
+                       }               \r
                }\r
-               \r
+\r
                public object SyncRoot\r
                {\r
                        get\r
@@ -89,19 +87,19 @@ namespace System.Web.UI.WebControls
                                return this;\r
                        }\r
                }\r
-               \r
+\r
                public void Add(ListItem item)\r
                {\r
                        items.Add(item);\r
                        if(marked)\r
                                item.Dirty = true;\r
                }\r
-               \r
+\r
                public void Add(string item)\r
                {\r
                        Add(new ListItem(item));\r
                }\r
-               \r
+\r
                public void AddRange(ListItem[] items)\r
                {\r
                        foreach(ListItem item in items)\r
@@ -110,24 +108,24 @@ namespace System.Web.UI.WebControls
                                        Add(item);\r
                        }\r
                }\r
-               \r
+\r
                public void Clear()\r
                {\r
                        items.Clear();\r
                        if(marked)\r
                                saveAll = true;\r
                }\r
-               \r
+\r
                public bool Contains(ListItem item)\r
                {\r
                        return items.Contains(item);\r
                }\r
-               \r
+\r
                public void CopyTo(Array array, int index)\r
                {\r
                        items.CopyTo(array, index);\r
                }\r
-               \r
+\r
                public ListItem FindByText(string text)\r
                {\r
                        int i=-1;\r
@@ -139,21 +137,19 @@ namespace System.Web.UI.WebControls
                        }\r
                        return (i==-1 ? null : (ListItem)items[i]);\r
                }\r
-               \r
+\r
                public ListItem FindByValue(string value)\r
                {\r
                        foreach(ListItem current in items)\r
                        {\r
                                if(current.Value == value)\r
                                {\r
-                                       if(current is Disposable)\r
-                                               current.Dispose();\r
                                        return current;\r
                                }\r
                        }\r
                        return null;\r
                }\r
-               \r
+\r
                internal int FindByValueInternal(string value)\r
                {\r
                        int i = -1;\r
@@ -162,36 +158,34 @@ namespace System.Web.UI.WebControls
                                i++;\r
                                if(current.Value == value)\r
                                {\r
-                                       if(current is Disposable)\r
-                                               current.Dispose();\r
                                        return i;\r
                                }\r
                        }\r
                        return -1;\r
                }\r
-               \r
+\r
                public IEnumerator GetEnumerator()\r
                {\r
                        return items.GetEnumerator();\r
                }\r
-               \r
+\r
                public int IndexOf(ListItem item)\r
                {\r
                        return items.IndexOf(item);\r
                }\r
-               \r
+\r
                public void Insert(int index, ListItem item)\r
                {\r
                        items.Insert(index, item);\r
                        if(marked)\r
                                saveAll = true;\r
                }\r
-               \r
+\r
                public void Insert(int index, string item)\r
                {\r
                        Insert(index, new ListItem(item));\r
                }\r
-               \r
+\r
                public void RemoveAt(int index)\r
                {\r
                        if(index < 0 || index >= items.Count)\r
@@ -200,87 +194,89 @@ namespace System.Web.UI.WebControls
                        if(marked)\r
                                saveAll = true;\r
                }\r
-               \r
+\r
                public void Remove(ListItem item)\r
                {\r
                        RemoveAt(IndexOf(item));\r
                }\r
-               \r
+\r
                public void Remove(string item)\r
                {\r
                        RemoveAt(IndexOf(ListItem.FromString(item)));\r
                }\r
-               \r
-               internal object SaveViewState()\r
-               {\r
-                       if(saveAll)\r
-                       {\r
-                               string[] keys = new string[Count];\r
-                               string[] vals = new string[Count];\r
-                               for(int i=0; i < Count; i++)\r
-                               {\r
-                                       keys[i] = this[i].Text;\r
-                                       vals[i] = this[i].Value;\r
+\r
+               internal object SaveViewState ()\r
+               {\r
+                       int count = Count;\r
+                       if (saveAll) {\r
+                               string [] keys = new string [count];\r
+                               string [] vals = new string [count];\r
+                               for(int i = 0; i < count; i++) {\r
+                                       keys[i] = this [i].Text;\r
+                                       vals[i] = this [i].Value;\r
                                }\r
-                               return new Triplet(Count, keys, vals);\r
+\r
+                               return new Triplet (count, keys, vals);\r
                        }\r
-                       ArrayList indices = new ArrayList();\r
-                       ArrayList states = new ArrayList();\r
+\r
+                       ArrayList indices = new ArrayList ();\r
+                       ArrayList states = new ArrayList ();\r
                        object o;\r
-                       for(int i=0; i < Count; i++)\r
-                       {\r
-                               o = this[i].SaveViewState();\r
-                               if(o!=null)\r
-                               {\r
-                                       indices.Add(i);\r
-                                       states.Add(o);\r
-                               }\r
+                       for(int i = 0; i < count; i++) {\r
+                               o = this [i].SaveViewState ();\r
+                               if (o == null)\r
+                                       continue;\r
+\r
+                               indices.Add (i);\r
+                               states.Add (o);\r
                        }\r
-                       if(indices.Count > 0)\r
-                               return new Pair(indices, states);\r
+\r
+                       if (indices.Count > 0)\r
+                               return new Pair (indices, states);\r
+\r
                        return null;\r
                }\r
-               \r
-               internal void LoadViewState(object savedState)\r
+\r
+               internal void LoadViewState (object savedState)\r
                {\r
-                       if(savedState!=null)\r
-                       {\r
-                               if(savedState is Pair)\r
-                               {\r
-                                       ArrayList indices = (ArrayList)(((Pair)savedState).First);\r
-                                       ArrayList states  = (ArrayList)(((Pair)savedState).Second);\r
-                                       for(int i=0; i < indices.Count; i++)\r
-                                       {\r
-                                               if( (int)indices[i] < Count )\r
-                                                       this[i].LoadViewState(states[i]);\r
-                                               else\r
-                                               {\r
-                                                       ListItem temp = new ListItem();\r
-                                                       temp.LoadViewState(states[i]);\r
-                                                       Add(temp);\r
-                                               }\r
+                       if (savedState == null)\r
+                               return;\r
+\r
+                       int i, end;\r
+                       if (savedState is Pair) {\r
+                               Pair pair = (Pair) savedState;\r
+                               ArrayList indices = (ArrayList) pair.First;\r
+                               ArrayList states  = (ArrayList) pair.Second;\r
+\r
+                               end = indices.Count;\r
+                               for (i = 0; i < end; i++) {\r
+                                       if ((int) indices [i] < Count ) {\r
+                                               this [i].LoadViewState (states [i]);\r
+                                       } else {\r
+                                               ListItem temp = new ListItem ();\r
+                                               temp.LoadViewState (states [i]);\r
+                                               Add (temp);\r
                                        }\r
                                }\r
-                               if(savedState is Triplet)\r
-                               {\r
-                                       Triplet t = (Triplet)savedState;\r
-                                       items = new ArrayList((int)t.First);\r
-                                       saveAll = true;\r
-                                       string[] text = (string[])t.Second;\r
-                                       string[] vals = (string[])t.Third;\r
-                                       for(int i=0; i < text.Length; i++)\r
-                                               items.Add(new ListItem(text[i], vals[i]));\r
-                               }\r
+                       } else if (savedState is Triplet) {\r
+                               Triplet t = (Triplet) savedState;\r
+                               items = new ArrayList ((int) t.First);\r
+                               saveAll = true;\r
+                               object [] text = (object []) t.Second;\r
+                               object [] vals = (object []) t.Third;\r
+                               end = text.Length;\r
+                               for(i = 0; i < end; i++)\r
+                                       items.Add (new ListItem (text[i].ToString (), vals[i].ToString ()));\r
                        }\r
                }\r
-               \r
+\r
                internal void TrackViewState()\r
                {\r
                        marked = true;\r
-                       foreach(ListItem current in this)\r
+                       foreach(ListItem current in items)\r
                                current.TrackViewState();\r
                }\r
-               \r
+\r
                bool IList.IsFixedSize\r
                {\r
                        get\r
@@ -295,12 +291,12 @@ namespace System.Web.UI.WebControls
                        {\r
                                return this[index];\r
                        }\r
+                       \r
                        set\r
                        {\r
-                               if(value is ListItem)\r
-                               {\r
-                                       this[index] = (ListItem)value;\r
-                               }\r
+                               if(index >= 0 && index < Count)\r
+                                       if(value is ListItem)\r
+                                               items[index] = (ListItem) value;\r
                        }\r
                }\r
 \r
@@ -311,27 +307,27 @@ namespace System.Web.UI.WebControls
                                ((ListItem)item).Dirty = true;\r
                        return index;\r
                }\r
-               \r
+\r
                bool IList.Contains(object item)\r
                {\r
                        if(item is ListItem)\r
                                return Contains((ListItem)item);\r
                        return false;\r
                }\r
-               \r
+\r
                int IList.IndexOf(object item)\r
                {\r
                        if(item is ListItem)\r
                                return IndexOf((ListItem)item);\r
                        return -1;\r
                }\r
-               \r
+\r
                void IList.Insert(int index, object item)\r
                {\r
                        if(item is ListItem)\r
                                Insert(index, (ListItem)item);\r
                }\r
-               \r
+\r
                void IList.Remove(object item)\r
                {\r
                        if(item is string)\r
@@ -339,7 +335,7 @@ namespace System.Web.UI.WebControls
                        if(item is ListItem)\r
                                Remove((ListItem)item);\r
                }\r
-               \r
+\r
                bool IStateManager.IsTrackingViewState\r
                {\r
                        get\r
@@ -347,17 +343,17 @@ namespace System.Web.UI.WebControls
                                return marked;\r
                        }\r
                }\r
-               \r
+\r
                void IStateManager.LoadViewState(object state)\r
                {\r
                        LoadViewState(state);\r
                }\r
-               \r
+\r
                object IStateManager.SaveViewState()\r
                {\r
                        return SaveViewState();\r
                }\r
-               \r
+\r
                void IStateManager.TrackViewState()\r
                {\r
                        TrackViewState();\r