09335447160e4f3d02b4452afa680c9e0ef5c3ce
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / ListControl.cs
1 /**\r
2 * Namespace: System.Web.UI.WebControls\r
3 * Class:     ListControl\r
4 *\r
5 * Author:  Gaurav Vaish\r
6 * Maintainer: gvaish@iitk.ac.in\r
7 * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8 * Status:  10%\r
9 *\r
10 * (C) Gaurav Vaish (2001)\r
11 */\r
12 \r
13 using System;\r
14 using System.Collections;\r
15 using System.ComponentModel;\r
16 using System.Web;\r
17 using System.Web.UI;\r
18 \r
19 namespace System.Web.UI.WebControls\r
20 {\r
21         public class ListControl: WebControl\r
22         {\r
23                 private static readonly object SelectedIndexChangedEvent = new object();\r
24 \r
25                 private object dataSource;\r
26                 private ListItemCollection items;\r
27                 \r
28                 public ListControl(): base(HtmlTextWriterTag.Select)\r
29                 {\r
30                 }\r
31                 \r
32                 public event EventHandler SelectedIndexChanged\r
33                 {\r
34                         add\r
35                         {\r
36                                 Events.AddHandler(SelectedIndexChangedEvent, value);\r
37                         }\r
38                         remove\r
39                         {\r
40                                 Events.RemoveHandler(SelectedIndexChangedEvent, value);\r
41                         }\r
42                 }\r
43                 \r
44                 protected virtual void OnSelectedIndexChanged(EventArgs e)\r
45                 {\r
46                         if(Events!=null)\r
47                                 {\r
48                                         EventHandler eh = (EventHandler)(Events[SelectedIndexChangedEvent]);\r
49                                         if(eh!=null)\r
50                                                 eh(this, e);\r
51                                 }\r
52                 }\r
53                 \r
54                 public virtual bool AutoPostBack\r
55                 {\r
56                         get\r
57                         {\r
58                                 object o = ViewState["AutoPostBack"];\r
59                                 if(o!=null)\r
60                                         return (bool)o;\r
61                                 return false;\r
62                         }\r
63                         set\r
64                         {\r
65                                 ViewState["AutoPostBack"] = value;\r
66                         }\r
67                 }\r
68                 \r
69                 public virtual string DataMember\r
70                 {\r
71                         get\r
72                         {\r
73                                 object o = ViewState["DataMember"];\r
74                                 if(o!=null)\r
75                                         return (string)o;\r
76                                 return String.Empty;\r
77                         }\r
78                         set\r
79                         {\r
80                                 ViewState["DataMember"] = value;\r
81                         }\r
82                 }\r
83                 \r
84                 public virtual object DataSource\r
85                 {\r
86                         get\r
87                         {\r
88                                 return dataSource;\r
89                         }\r
90                         set\r
91                         {\r
92                                 if(value != null)\r
93                                 {\r
94                                         if(value is IListSource || value is IEnumerable)\r
95                                         {\r
96                                                 dataSource = value;\r
97                                                 return;\r
98                                         }\r
99                                 }\r
100                                 throw new ArgumentException(/*HttpRuntime.FormatResourceString(ID, "Invalid DataSource Type")*/);\r
101                         }\r
102                 }\r
103                 \r
104                 public virtual string DataTextField\r
105                 {\r
106                         get\r
107                         {\r
108                                 object o = ViewState["DataTextField"];\r
109                                 if(o!=null)\r
110                                         return (string)o;\r
111                                 return String.Empty;\r
112                         }\r
113                         set\r
114                         {\r
115                                 ViewState["DataTextField"] = value;\r
116                         }\r
117                 }\r
118                 \r
119                 public virtual string DataTextFormatString\r
120                 {\r
121                         get\r
122                         {\r
123                                 object o = ViewState["DataTextFormatString"];\r
124                                 if(o!=null)\r
125                                         return (string)o;\r
126                                 return String.Empty;\r
127                         }\r
128                         set\r
129                         {\r
130                                 ViewState["DataTextFormatString"] = value;\r
131                         }\r
132                 }\r
133                 \r
134                 public virtual string DataValueField\r
135                 {\r
136                         get\r
137                         {\r
138                                 object o = ViewState["DataValueField"];\r
139                                 if(o!=null)\r
140                                         return (string)o;\r
141                                 return String.Empty;\r
142                         }\r
143                         set\r
144                         {\r
145                                 ViewState["DataValueField"] = value;\r
146                         }\r
147                 }\r
148                 \r
149                 public virtual ListItemCollection Items\r
150                 {\r
151                         get\r
152                         {\r
153                                 if(items==null)\r
154                                 {\r
155                                         items = new ListItemCollection();\r
156                                         if(IsTrackingViewState)\r
157                                         {\r
158                                                 //items.TrackViewState();\r
159                                         }\r
160                                 }\r
161                                 return items;\r
162                         }\r
163                 }\r
164                 \r
165                 public virtual int SelectedIndex\r
166                 {\r
167                         get\r
168                         {\r
169                                 object o = ViewState["SelectedIndex"];\r
170                                 if(o!=null)\r
171                                         return (int)o;\r
172                                 return -1;\r
173                         }\r
174                         set\r
175                         {\r
176                                 ViewState["SelectedIndex"] = value;\r
177                         }\r
178                 }\r
179                 \r
180                 public virtual ListItem SelectedItem\r
181                 {\r
182                         get\r
183                         {\r
184                                 if(SelectedIndex > 0)\r
185                                 {\r
186                                         return Items[SelectedIndex];\r
187                                 }\r
188                                 return null;\r
189                         }\r
190                 }\r
191                 \r
192                 internal virtual ArrayList SelectedIndexes\r
193                 {\r
194                         get\r
195                         {\r
196                                 ArrayList retVal = new ArrayList();\r
197                                 int index = 0;\r
198                                 while(index < Items.Count)\r
199                                 {\r
200                                         retVal.Add(Items[index++]);\r
201                                 }\r
202                                 return retVal;\r
203                         }\r
204                 }\r
205                 \r
206                 internal void Select(ArrayList whatToSelect)\r
207                 {\r
208                         ClearSelection();\r
209                         int i = 0;\r
210                         while(i < whatToSelect.Count)\r
211                         {\r
212                                 int index = (int)whatToSelect[i++];                             \r
213                                 if(index > 0)\r
214                                 {\r
215                                         Items[index].Selected = true;\r
216                                 }\r
217                         }\r
218                 }\r
219                 \r
220                 public virtual void ClearSelection()\r
221                 {\r
222                         //TODO: Found it - an undocumented method\r
223                 }\r
224                 \r
225                 protected override void LoadViewState(object savedState)\r
226                 {\r
227                         //TODO: Implement me\r
228                         throw new NotImplementedException();\r
229                 }\r
230         }\r
231 }\r