2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / RangeValidator.cs
1 //
2 // System.Web.UI.WebControls.RangeValidator.cs
3 //
4 // Authors:
5 //   Gaurav Vaish (gvaish@iitk.ac.in)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) Gaurav Vaish (2002)
9 // (C) 2003 Andreas Nahr
10 //
11
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 // 
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 // 
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 //
32 \r
33 using System;
34 using System.ComponentModel;\r
35 using System.Web;\r
36 using System.Web.UI;\r
37 using System.Xml;\r
38 \r
39 namespace System.Web.UI.WebControls\r
40 {\r
41         [ToolboxData("<{0}:RangeValidator runat=\"server\" "\r
42                       + "ErrorMessage=\"RangeValidator\"></{0}:RangeValidator>")]\r
43         public class RangeValidator : BaseCompareValidator\r
44         {\r
45                 public RangeValidator(): base()\r
46                 {\r
47                 }\r
48
49                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
50                 [WebSysDescription ("The maximum value that the validated control can be assigned.")]\r
51                 public string MaximumValue\r
52                 {\r
53                         get\r
54                         {\r
55                                 object o = ViewState["MaximumValue"];\r
56                                 if(o != null)\r
57                                 {\r
58                                         return (string)o;\r
59                                 }\r
60                                 return String.Empty;\r
61                         }\r
62                         set\r
63                         {\r
64                                 ViewState["MaximumValue"] = value;\r
65                         }\r
66                 }\r
67
68                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
69                 [WebSysDescription ("The minimum value that the validated control can be assigned.")]\r
70                 public string MinimumValue\r
71                 {\r
72                         get\r
73                         {\r
74                                 object o = ViewState["MinimumValue"];\r
75                                 if(o != null)\r
76                                 {\r
77                                         return (string)o;\r
78                                 }\r
79                                 return String.Empty;\r
80                         }\r
81                         set\r
82                         {\r
83                                 ViewState["MinimumValue"] = value;\r
84                         }\r
85                 }\r
86 \r
87                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
88                 {\r
89                         base.AddAttributesToRender(writer);\r
90                         if(base.RenderUplevel)\r
91                         {\r
92                                 writer.AddAttribute("evaluationfunction", "RangeValidatorEvaluateIsValid");\r
93                                 writer.AddAttribute("maximumvalue", MaximumValue);\r
94                                 writer.AddAttribute("minimumvalue", MinimumValue);\r
95                         }\r
96                 }\r
97 \r
98                 protected override bool ControlPropertiesValid()\r
99                 {\r
100                         string max = MaximumValue;\r
101                         if(!CanConvert(max, Type))\r
102                         {\r
103                                 string[] fmt = new string[4];\r
104                                 fmt[0] = max;\r
105                                 fmt[1] = "MaximumValue";\r
106                                 fmt[2] = ID;\r
107                                 fmt[3] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
108                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_value_bad_type", fmt));\r
109                         }\r
110                         string min = MinimumValue;\r
111                         if(!CanConvert(min, Type))\r
112                         {\r
113                                 string[] fmt = new string[4];\r
114                                 fmt[0] = min;\r
115                                 fmt[1] = "MinimumValue";\r
116                                 fmt[2] = ID;\r
117                                 fmt[3] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
118                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_value_bad_type", fmt));\r
119                         }\r
120 \r
121                         if(Compare(min,max,  ValidationCompareOperator.GreaterThan, Type))\r
122                         {\r
123                                 string[] fmt = new string[3];\r
124                                 fmt[0] = min;\r
125                                 fmt[1] = max;\r
126                                 fmt[2] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
127                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_range_overalap", fmt));\r
128                         }\r
129                         return base.ControlPropertiesValid();\r
130                 }\r
131 \r
132                 protected override bool EvaluateIsValid()\r
133                 {\r
134                         string ctrl = GetControlValidationValue(ControlToValidate);\r
135                         if(ctrl == null || ctrl.Trim().Length == 0)\r
136                         {\r
137                                 return true;\r
138                         }\r
139                         bool retVal = Compare(ctrl, MinimumValue, ValidationCompareOperator.GreaterThanEqual,\r
140                                              this.Type);\r
141                         if(retVal)\r
142                         {\r
143                                 retVal = Compare(ctrl, MaximumValue, ValidationCompareOperator.LessThanEqual,\r
144                                                  this.Type);\r
145                         }\r
146                         return retVal;\r
147                 }\r
148         }\r
149 }\r