[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / System.Web / Test / mainsoft / NunitWeb / NunitWeb / PageInvoker.cs
1 using System;
2 using System.Web.UI;
3
4 namespace MonoTests.SystemWeb.Framework
5 {
6         /// <summary>
7         /// This class is used to pass and invoke the user callbacks to all possible
8         /// <see cref="System.Web.UI.Page"/> lifecycle events. For the most
9         /// used events <see cref="System.Web.UI.Control.Init"/> and
10         /// <see cref="System.Web.UI.Control.Load"/> there are convenience
11         /// creation methods <see cref="CreateOnInit"/> and <see cref="CreateOnLoad"/>.
12         /// In .NET 2.0 there same applies to PreInit event.
13         /// </summary>
14         /// <seealso cref="System.Web.UI.Control.Init"/>
15         /// <seealso cref="System.Web.UI.Control.Load"/>
16         /// <seealso cref="CreateOnInit"/>
17         /// <seealso cref="CreateOnLoad"/>
18         [Serializable]
19         public class PageInvoker:BaseInvoker
20         {
21                 /// <summary>
22                 /// The constructor method.
23                 /// </summary>
24                 /// <param name="delegates">Value which initializes <see cref="Delegates"/> property.</param>
25                 /// <seealso cref="Delegates"/>
26                 public PageInvoker (PageDelegates delegates)
27                 {
28                         Delegates = delegates;
29                 }
30
31                 PageDelegates _delegates;
32                 /// <summary>
33                 /// Set or get the <see cref="PageDelegates"/> collection.
34                 /// </summary>
35                 /// <seealso cref="PageDelegates"/>
36                 public PageDelegates Delegates
37                 {
38                         get { return _delegates; }
39                         set { _delegates = value; }
40                 }
41
42                 /// <summary>
43                 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
44                 /// given callback for PreInit event.
45                 /// </summary>
46                 /// <param name="callback">The user callback.</param>
47                 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
48                 public static PageInvoker CreateOnPreInit (PageDelegate callback)
49                 {
50                         PageDelegates pd = new PageDelegates ();
51                         pd.PreInit = callback;
52                         PageInvoker pi = new PageInvoker (pd);
53                         return pi;
54                 }
55
56                 /// <summary>
57                 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
58                 /// given callback for Init event.
59                 /// </summary>
60                 /// <param name="callback">The user callback.</param>
61                 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
62                 public static PageInvoker CreateOnInit (PageDelegate callback)
63                 {
64                         PageDelegates pd = new PageDelegates ();
65                         pd.Init = callback;
66                         PageInvoker pi = new PageInvoker (pd);
67                         return pi;
68                 }
69
70                 /// <summary>
71                 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
72                 /// given callback for Load event.
73                 /// </summary>
74                 /// <param name="callback">The user callback.</param>
75                 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
76                 public static PageInvoker CreateOnLoad (PageDelegate callback)
77                 {
78                         PageDelegates pd = new PageDelegates ();
79                         pd.Load = callback;
80                         PageInvoker pi = new PageInvoker (pd);
81                         return pi;
82                 }
83
84                 [NonSerialized]
85                 Page _page;
86
87                 /// <summary>
88                 /// Add the callbacks contained in <see cref="Delegates"/> to
89                 /// the given page's events.
90                 /// </summary>
91                 /// <param name="parameters">Must contain one parameter of type
92                 /// <see cref="System.Web.UI.Page"/></param>
93                 /// <seealso cref="Delegates"/>
94                 public override void DoInvoke (params object [] parameters)
95                 {
96                         base.DoInvoke (parameters);
97                         if (parameters.Length != 1 || !(parameters[0] is Page))
98                                 throw new ArgumentException ("A single parameter with type System.Web.UI.Page is expected");
99
100                         _page = (Page) parameters[0];
101
102                         OnPreInit (null, null);
103
104                         _page.LoadComplete += OnLoadComplete;
105                         _page.PreLoad += OnPreLoad;
106                         _page.PreRenderComplete += OnPreRenderComplete;
107                         _page.InitComplete += OnInitComplete;
108                         _page.SaveStateComplete += OnSaveStateComplete;
109                         _page.CommitTransaction += new EventHandler (OnCommitTransaction);
110                         _page.AbortTransaction += new EventHandler (OnAbortTransaction);
111                         _page.Error += new EventHandler (OnError);
112                         _page.Disposed += new EventHandler (OnDisposed);
113                         _page.DataBinding += new EventHandler (OnDataBinding);
114                         _page.Init += new EventHandler (OnInit);
115                         _page.Load += new EventHandler (OnLoad);
116                         _page.PreRender += new EventHandler (OnPreRender);
117                         _page.Unload += new EventHandler (OnUnload);
118                 }
119
120                 #region Handlers
121
122                 /// <summary>
123                 /// This must be made private as soon as Mono allows using private methods for delegates
124                 /// </summary>
125                 /// <param name="sender"></param>
126                 /// <param name="a"></param>
127                 public void OnLoadComplete (object sender, EventArgs a)
128                 {
129                         Invoke (Delegates.LoadComplete);
130                 }
131                 /// <summary>
132                 /// This must be made private as soon as Mono allows using private methods for delegates
133                 /// </summary>
134                 /// <param name="sender"></param>
135                 /// <param name="a"></param>
136                 public void OnPreInit (object sender, EventArgs a)
137                 {
138                         Invoke (Delegates.PreInit);
139                 }
140                 /// <summary>
141                 /// This must be made private as soon as Mono allows using private methods for delegates
142                 /// </summary>
143                 /// <param name="sender"></param>
144                 /// <param name="a"></param>
145                 public void OnPreLoad (object sender, EventArgs a)
146                 {
147                         Invoke (Delegates.PreLoad);
148                 }
149                 /// <summary>
150                 /// This must be made private as soon as Mono allows using private methods for delegates
151                 /// </summary>
152                 /// <param name="sender"></param>
153                 /// <param name="a"></param>
154                 public void OnPreRenderComplete (object sender, EventArgs a)
155                 {
156                         Invoke (Delegates.PreRenderComplete);
157                 }
158                 /// <summary>
159                 /// This must be made private as soon as Mono allows using private methods for delegates
160                 /// </summary>
161                 /// <param name="sender"></param>
162                 /// <param name="a"></param>
163                 public void OnInitComplete (object sender, EventArgs a)
164                 {
165                         Invoke (Delegates.InitComplete);
166                 }
167                 /// <summary>
168                 /// This must be made private as soon as Mono allows using private methods for delegates
169                 /// </summary>
170                 /// <param name="sender"></param>
171                 /// <param name="a"></param>
172                 public void OnSaveStateComplete (object sender, EventArgs a)
173                 {
174                         Invoke (Delegates.SaveStateComplete);
175                 }
176                 /// <summary>
177                 /// This must be made private as soon as Mono allows using private methods for delegates
178                 /// </summary>
179                 /// <param name="sender"></param>
180                 /// <param name="a"></param>
181                 public void OnCommitTransaction (object sender, EventArgs a)
182                 {
183                         Invoke (Delegates.CommitTransaction);
184                 }
185                 /// <summary>
186                 /// This must be made private as soon as Mono allows using private methods for delegates
187                 /// </summary>
188                 /// <param name="sender"></param>
189                 /// <param name="a"></param>
190                 public void OnAbortTransaction (object sender, EventArgs a)
191                 {
192                         Invoke (Delegates.AbortTransaction);
193                 }
194                 /// <summary>
195                 /// This must be made private as soon as Mono allows using private methods for delegates
196                 /// </summary>
197                 /// <param name="sender"></param>
198                 /// <param name="a"></param>
199                 public void OnError (object sender, EventArgs a)
200                 {
201                         Invoke (Delegates.Error);
202                 }
203                 /// <summary>
204                 /// This must be made private as soon as Mono allows using private methods for delegates
205                 /// </summary>
206                 /// <param name="sender"></param>
207                 /// <param name="a"></param>
208                 public void OnDisposed (object sender, EventArgs a)
209                 {
210                         Invoke (Delegates.Disposed);
211                 }
212                 /// <summary>
213                 /// This must be made private as soon as Mono allows using private methods for delegates
214                 /// </summary>
215                 /// <param name="sender"></param>
216                 /// <param name="a"></param>
217                 public void OnDataBinding (object sender, EventArgs a)
218                 {
219                         Invoke (Delegates.DataBinding);
220                 }
221                 /// <summary>
222                 /// This must be made private as soon as Mono allows using private methods for delegates
223                 /// </summary>
224                 /// <param name="sender"></param>
225                 /// <param name="a"></param>
226                 public void OnInit (object sender, EventArgs a)
227                 {
228                         Invoke (Delegates.Init);
229                 }
230                 /// <summary>
231                 /// This must be made private as soon as Mono allows using private methods for delegates
232                 /// </summary>
233                 /// <param name="sender"></param>
234                 /// <param name="a"></param>
235                 public void OnLoad (object sender, EventArgs a)
236                 {
237                         Invoke (Delegates.Load);
238                 }
239                 /// <summary>
240                 /// This must be made private as soon as Mono allows using private methods for delegates
241                 /// </summary>
242                 /// <param name="sender"></param>
243                 /// <param name="a"></param>
244                 public void OnPreRender (object sender, EventArgs a)
245                 {
246                         Invoke (Delegates.PreRender);
247                 }
248                 /// <summary>
249                 /// This must be made private as soon as Mono allows using private methods for delegates
250                 /// </summary>
251                 /// <param name="sender"></param>
252                 /// <param name="a"></param>
253                 public void OnUnload (object sender, EventArgs a)
254                 {
255                         Invoke (Delegates.Unload);
256                 }
257                 #endregion
258
259                 void Invoke (PageDelegate callback)
260                 {
261                         try {
262                                 if (callback != null)
263                                         callback (_page);
264                         }
265                         catch (Exception e) {
266                                 WebTest.RegisterException (e);
267                                 throw;
268                         }
269                 }
270
271                 /// <summary>
272                 /// Returns the URL of a generic empty page.
273                 /// </summary>
274                 /// <returns>The default URL.</returns>
275                 public override string GetDefaultUrl ()
276                 {
277                         return StandardUrl.EMPTY_PAGE;
278                 }
279         }
280 }