* Style.cs: fixed restoring FontInfo from ViewState
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / CreateUserWizardStep.cs
1 //
2 // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
3 //
4 // Authors:
5 //      Vladimir Krasnov <vladimirk@mainsoft.com>
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining
8 // a copy of this software and associated documentation files (the
9 // "Software"), to deal in the Software without restriction, including
10 // without limitation the rights to use, copy, modify, merge, publish,
11 // distribute, sublicense, and/or sell copies of the Software, and to
12 // permit persons to whom the Software is furnished to do so, subject to
13 // the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be
16 // included in all copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 //
26
27 #if NET_2_0
28
29 using System;
30 using System.Web;
31 using System.Web.UI;
32 using System.Collections.Generic;
33 using System.ComponentModel;
34 using System.Text;
35
36 namespace System.Web.UI.WebControls
37 {
38         public sealed class CreateUserWizardStep : TemplatedWizardStep
39         {
40                 public CreateUserWizardStep ()
41                 {
42                 }
43
44                 [MonoTODO ("Always false?")]
45                 public override bool AllowReturn
46                 {
47                         get { return false; }
48                         set { throw new InvalidOperationException ("AllowReturn cannot be set."); }
49                 }
50
51                 [LocalizableAttribute (true)]
52                 public override string Title
53                 {
54                         get
55                         {
56                                 object o = ViewState ["TitleText"];
57                                 return (o == null) ? Locale.GetText ("Sign Up for Your New Account") : (string) o;
58                         }
59                         set
60                         {
61                                 if (value == null)
62                                         ViewState.Remove ("TitleText");
63                                 else
64                                         ViewState ["TitleText"] = value;
65                         }
66                 }
67
68                 [ThemeableAttribute (false)]
69                 public override WizardStepType StepType
70                 {
71                         get { return base.StepType; }
72                         set { base.StepType = value; }
73                 }
74
75                 internal override ITemplate DefaultContentTemplate
76                 {
77                         get { return new CreateUserStepTemplate ((CreateUserWizard) Wizard); }
78                 }
79
80                 internal override BaseWizardContainer DefaultContentContainer
81                 {
82                         get { return new CreateUserStepContainer (); }
83                 }
84         }
85
86         internal sealed class CreateUserStepContainer : BaseWizardContainer
87         {
88                 public CreateUserStepContainer ()
89                 {
90                 }
91
92                 public Control UserNameTextBox
93                 {
94                         get
95                         {
96                                 Control c = FindControl ("UserName");
97                                 if (c == null)
98                                         throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID UserName for the username.");
99
100                                 return c;
101                         }
102                 }
103                 public Control PasswordTextBox
104                 {
105                         get
106                         {
107                                 Control c = FindControl ("Password");
108                                 if (c == null)
109                                         throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Password for the new password, this is required if AutoGeneratePassword = true.");
110
111                                 return c;
112                         }
113                 }
114                 public Control ConfirmPasswordTextBox
115                 {
116                         get
117                         {
118                                 Control c = FindControl ("Password");
119                                 return c;
120                         }
121                 }
122                 public Control EmailTextBox
123                 {
124                         get
125                         {
126                                 Control c = FindControl ("Email");
127                                 if (c == null)
128                                         throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Email for the e-mail, this is required if RequireEmail = true.");
129
130                                 return c;
131                         }
132                 }
133                 public Control QuestionTextBox
134                 {
135                         get
136                         {
137                                 Control c = FindControl ("Question");
138                                 if (c == null)
139                                         throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Question for the security question, this is required if your membership provider requires a question and answer.");
140
141                                 return c;
142                         }
143                 }
144                 public Control AnswerTextBox
145                 {
146                         get
147                         {
148                                 Control c = FindControl ("Answer");
149                                 if (c == null)
150                                         throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Answer for the security answer, this is required if your membership provider requires a question and answer.");
151
152                                 return c;
153                         }
154                 }
155                 public Label ErrorMessageLabel
156                 {
157                         get { return FindControl ("ErrorMessage") as Label; }
158                 }
159         }
160
161         sealed class CreateUserStepTemplate : WebControl, ITemplate
162         {
163                 readonly CreateUserWizard _createUserWizard;
164
165                 public CreateUserStepTemplate (CreateUserWizard createUserWizard)
166                 {
167                         _createUserWizard = createUserWizard;
168                 }
169
170                 #region ITemplate Members
171
172                 TableRow CreateRow (Control c0, Control c1, Control c2, Style s0, Style s1)
173                 {
174                         TableRow row = new TableRow ();
175                         TableCell cell0 = new TableCell ();
176                         TableCell cell1 = new TableCell ();
177
178                         cell0.Controls.Add (c0);
179                         row.Controls.Add (cell0);
180
181                         if ((c1 != null) && (c2 != null)) {
182                                 cell1.Controls.Add (c1);
183                                 cell1.Controls.Add (c2);
184                                 cell0.HorizontalAlign = HorizontalAlign.Right;
185
186                                 if (s0 != null)
187                                         cell0.ApplyStyle (s0);
188                                 if (s1 != null)
189                                         cell1.ApplyStyle (s1);
190
191                                 row.Controls.Add (cell1);
192                         }
193                         else {
194                                 cell0.ColumnSpan = 2;
195                                 cell0.HorizontalAlign = HorizontalAlign.Center;
196                                 if (s0 != null)
197                                         cell0.ApplyStyle (s0);
198                         }
199                         return row;
200                 }
201
202                 void ITemplate.InstantiateIn (Control container)
203                 {
204                         Table table = new Table ();
205                         table.ControlStyle.Width = Unit.Percentage (100);
206                         table.ControlStyle.Height = Unit.Percentage (100);
207
208                         // Row #0
209                         table.Controls.Add (
210                                 CreateRow (new LiteralControl (_createUserWizard.CreateUserStep.Title),
211                                 null, null, _createUserWizard.TitleTextStyle, null));
212
213                         // Row #1
214                         if (_createUserWizard.InstructionText.Length > 0) {
215                                 table.Controls.Add (
216                                         CreateRow (new LiteralControl (_createUserWizard.InstructionText),
217                                         null, null, _createUserWizard.InstructionTextStyle, null));
218                         }
219
220                         // Row #2
221                         TextBox UserName = new TextBox ();
222                         UserName.ID = "UserName";
223                         UserName.ApplyStyle (_createUserWizard.TextBoxStyle);
224
225                         Label UserNameLabel = new Label ();
226                         UserNameLabel.AssociatedControlID = "UserName";
227                         UserNameLabel.Text = _createUserWizard.UserNameLabelText;
228
229
230                         RequiredFieldValidator UserNameRequired = new RequiredFieldValidator ();
231                         UserNameRequired.ID = "UserNameRequired";
232                         UserNameRequired.ControlToValidate = "UserName";
233                         UserNameRequired.ErrorMessage = _createUserWizard.UserNameRequiredErrorMessage;
234                         UserNameRequired.ToolTip = _createUserWizard.UserNameRequiredErrorMessage;
235                         UserNameRequired.Text = "*";
236                         UserNameRequired.ValidationGroup = _createUserWizard.ID;
237                         UserNameRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
238
239                         table.Controls.Add (CreateRow (UserNameLabel, UserName, UserNameRequired, _createUserWizard.LabelStyle, null));
240
241                         // Row #3
242                         if (!_createUserWizard.AutoGeneratePassword) {
243                                 TextBox Password = new TextBox ();
244                                 Password.ID = "Password";
245                                 Password.TextMode = TextBoxMode.Password;
246                                 Password.ApplyStyle (_createUserWizard.TextBoxStyle);
247
248                                 Label PasswordLabel = new Label ();
249                                 PasswordLabel.AssociatedControlID = "Password";
250                                 PasswordLabel.Text = _createUserWizard.PasswordLabelText;
251
252                                 RequiredFieldValidator PasswordRequired = new RequiredFieldValidator ();
253                                 PasswordRequired.ID = "PasswordRequired";
254                                 PasswordRequired.ControlToValidate = "Password";
255                                 PasswordRequired.ErrorMessage = _createUserWizard.PasswordRequiredErrorMessage;
256                                 PasswordRequired.ToolTip = _createUserWizard.PasswordRequiredErrorMessage;
257                                 PasswordRequired.Text = "*";
258                                 PasswordRequired.ValidationGroup = _createUserWizard.ID;
259                                 PasswordRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
260
261                                 table.Controls.Add (CreateRow (PasswordLabel, Password, PasswordRequired, _createUserWizard.LabelStyle, null));
262
263                                 // Row #4
264                                 if (_createUserWizard.PasswordHintText.Length > 0) {
265                                         table.Controls.Add (
266                                                 CreateRow (new LiteralControl (""),
267                                                         new LiteralControl (_createUserWizard.PasswordHintText),
268                                                         new LiteralControl (""),
269                                                         null, _createUserWizard.PasswordHintStyle));
270                                 }
271
272                                 // Row #5
273                                 TextBox ConfirmPassword = new TextBox ();
274                                 ConfirmPassword.ID = "ConfirmPassword";
275                                 ConfirmPassword.TextMode = TextBoxMode.Password;
276                                 ConfirmPassword.ApplyStyle (_createUserWizard.TextBoxStyle);
277
278                                 Label ConfirmPasswordLabel = new Label ();
279                                 ConfirmPasswordLabel.AssociatedControlID = "ConfirmPassword";
280                                 ConfirmPasswordLabel.Text = _createUserWizard.ConfirmPasswordLabelText;
281
282                                 RequiredFieldValidator ConfirmPasswordRequired = new RequiredFieldValidator ();
283                                 ConfirmPasswordRequired.ID = "ConfirmPasswordRequired";
284                                 ConfirmPasswordRequired.ControlToValidate = "ConfirmPassword";
285                                 ConfirmPasswordRequired.ErrorMessage = _createUserWizard.ConfirmPasswordRequiredErrorMessage;
286                                 ConfirmPasswordRequired.ToolTip = _createUserWizard.ConfirmPasswordRequiredErrorMessage;
287                                 ConfirmPasswordRequired.Text = "*";
288                                 ConfirmPasswordRequired.ValidationGroup = _createUserWizard.ID;
289                                 ConfirmPasswordRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
290
291                                 table.Controls.Add (CreateRow (ConfirmPasswordLabel, ConfirmPassword, ConfirmPasswordRequired, _createUserWizard.LabelStyle, null));
292                         }
293
294                         // Row #6
295                         if (_createUserWizard.RequireEmail) {
296                                 TextBox Email = new TextBox ();
297                                 Email.ID = "Email";
298                                 Email.ApplyStyle (_createUserWizard.TextBoxStyle);
299
300                                 Label EmailLabel = new Label ();
301                                 EmailLabel.AssociatedControlID = "Email";
302                                 EmailLabel.Text = _createUserWizard.EmailLabelText;
303
304                                 RequiredFieldValidator EmailRequired = new RequiredFieldValidator ();
305                                 EmailRequired.ID = "EmailRequired";
306                                 EmailRequired.ControlToValidate = "Email";
307                                 EmailRequired.ErrorMessage = _createUserWizard.EmailRequiredErrorMessage;
308                                 EmailRequired.ToolTip = _createUserWizard.EmailRequiredErrorMessage;
309                                 EmailRequired.Text = "*";
310                                 EmailRequired.ValidationGroup = _createUserWizard.ID;
311                                 EmailRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
312
313                                 table.Controls.Add (CreateRow (EmailLabel, Email, EmailRequired, _createUserWizard.LabelStyle, null));
314                         }
315
316                         // Row #7
317                         if (_createUserWizard.QuestionAndAnswerRequired) {
318                                 TextBox Question = new TextBox ();
319                                 Question.ID = "Question";
320                                 Question.ApplyStyle (_createUserWizard.TextBoxStyle);
321
322                                 Label QuestionLabel = new Label ();
323                                 QuestionLabel.AssociatedControlID = "Question";
324                                 QuestionLabel.Text = _createUserWizard.QuestionLabelText;
325
326                                 RequiredFieldValidator QuestionRequired = new RequiredFieldValidator ();
327                                 QuestionRequired.ID = "QuestionRequired";
328                                 QuestionRequired.ControlToValidate = "Question";
329                                 QuestionRequired.ErrorMessage = _createUserWizard.QuestionRequiredErrorMessage;
330                                 QuestionRequired.ToolTip = _createUserWizard.QuestionRequiredErrorMessage;
331                                 QuestionRequired.Text = "*";
332                                 QuestionRequired.ValidationGroup = _createUserWizard.ID;
333                                 QuestionRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
334
335                                 table.Controls.Add (CreateRow (QuestionLabel, Question, QuestionRequired, _createUserWizard.LabelStyle, null));
336
337                                 // Row #8
338                                 TextBox Answer = new TextBox ();
339                                 Answer.ID = "Answer";
340                                 Answer.ApplyStyle (_createUserWizard.TextBoxStyle);
341
342                                 Label AnswerLabel = new Label ();
343                                 AnswerLabel.AssociatedControlID = "Answer";
344                                 AnswerLabel.Text = _createUserWizard.AnswerLabelText;
345
346                                 RequiredFieldValidator AnswerRequired = new RequiredFieldValidator ();
347                                 AnswerRequired.ID = "AnswerRequired";
348                                 AnswerRequired.ControlToValidate = "Answer";
349                                 AnswerRequired.ErrorMessage = _createUserWizard.AnswerRequiredErrorMessage;
350                                 AnswerRequired.ToolTip = _createUserWizard.AnswerRequiredErrorMessage;
351                                 AnswerRequired.Text = "*";
352                                 AnswerRequired.ValidationGroup = _createUserWizard.ID;
353                                 AnswerRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
354
355                                 table.Controls.Add (CreateRow (AnswerLabel, Answer, AnswerRequired, _createUserWizard.LabelStyle, null));
356                         }
357
358                         // Row #9
359                         if (!_createUserWizard.AutoGeneratePassword) {
360                                 CompareValidator PasswordCompare = new CompareValidator ();
361                                 PasswordCompare.ID = "PasswordCompare";
362                                 PasswordCompare.ControlToCompare = "Password";
363                                 PasswordCompare.ControlToValidate = "ConfirmPassword";
364                                 PasswordCompare.Display = ValidatorDisplay.Dynamic;
365                                 PasswordCompare.ErrorMessage = _createUserWizard.ConfirmPasswordCompareErrorMessage;
366                                 PasswordCompare.ValidationGroup = _createUserWizard.ID;
367
368                                 table.Controls.Add (CreateRow (PasswordCompare, null, null, null, null));
369                         }
370
371                         // Row #10
372                         if (_createUserWizard.PasswordRegularExpression.Length > 0) {
373                                 RegularExpressionValidator PasswordRegEx = new RegularExpressionValidator ();
374                                 PasswordRegEx.ID = "PasswordRegEx";
375                                 PasswordRegEx.ControlToValidate = "Password";
376                                 PasswordRegEx.ValidationExpression = _createUserWizard.PasswordRegularExpression;
377                                 PasswordRegEx.Display = ValidatorDisplay.Dynamic;
378                                 PasswordRegEx.ErrorMessage = _createUserWizard.PasswordRegularExpressionErrorMessage;
379                                 PasswordRegEx.ValidationGroup = _createUserWizard.ID;
380
381                                 table.Controls.Add (CreateRow (PasswordRegEx, null, null, null, null));
382                         }
383
384                         // Row #11
385                         if (_createUserWizard.EmailRegularExpression.Length > 0) {
386                                 RegularExpressionValidator EmailRegEx = new RegularExpressionValidator ();
387                                 EmailRegEx.ID = "EmailRegEx";
388                                 EmailRegEx.ControlToValidate = "Email";
389                                 EmailRegEx.ValidationExpression = _createUserWizard.EmailRegularExpression;
390                                 EmailRegEx.Display = ValidatorDisplay.Dynamic;
391                                 EmailRegEx.ErrorMessage = _createUserWizard.EmailRegularExpressionErrorMessage;
392                                 EmailRegEx.ValidationGroup = _createUserWizard.ID;
393
394                                 table.Controls.Add (CreateRow (EmailRegEx, null, null, null, null));
395                         }
396
397                         // Row #12
398                         Label ErrorMessage = new Label ();
399                         ErrorMessage.ID = "ErrorMessage";
400                         ErrorMessage.EnableViewState = false;
401                         ErrorMessage.ControlStyle.ForeColor = System.Drawing.Color.Red;
402
403                         table.Controls.Add (CreateRow (ErrorMessage, null, null, null, null));
404
405                         // Row #13
406                         TableRow row9 = null;
407
408                         HyperLink HelpLink = null;
409                         if (_createUserWizard.HelpPageText.Length > 0) {
410                                 HelpLink = new HyperLink ();
411                                 HelpLink.Text = _createUserWizard.HelpPageText;
412
413                                 if (_createUserWizard.HelpPageUrl.Length > 0)
414                                         HelpLink.NavigateUrl = _createUserWizard.HelpPageUrl;
415
416                                 row9 = CreateRow (HelpLink, null, null, _createUserWizard.HyperLinkStyle, null);
417                         }
418
419                         Image HelpPageIcon = null;
420                         if (_createUserWizard.HelpPageIconUrl.Length > 0) {
421                                 HelpPageIcon = new Image ();
422                                 HelpPageIcon.ImageUrl = _createUserWizard.HelpPageIconUrl;
423                                 HelpPageIcon.BorderWidth = Unit.Pixel (0);
424
425                                 if (_createUserWizard.HelpPageText.Length > 0)
426                                         HelpPageIcon.AlternateText = _createUserWizard.HelpPageText;
427
428                                 if (row9 == null)
429                                         row9 = CreateRow (HelpPageIcon, null, null, _createUserWizard.HyperLinkStyle, null);
430                                 else
431                                         row9.Cells [0].Controls.AddAt (0, HelpPageIcon);
432                         }
433                         if (row9 != null) {
434                                 row9.Cells [0].HorizontalAlign = HorizontalAlign.Left;
435                                 table.Controls.Add (row9);
436                         }
437
438                         //
439                         container.Controls.Add (table);
440                 }
441
442                 #endregion
443         }
444 }
445
446 #endif