2002-07-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
authorGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Sun, 14 Jul 2002 01:13:50 +0000 (01:13 -0000)
committerGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Sun, 14 Jul 2002 01:13:50 +0000 (01:13 -0000)
* FontUnit.cs: use a hashtable for mapping size name to value.
* HyperLink.cs: fixed a bug and a typo.
* Unit.cs: some fixes to internal constructor.

svn path=/trunk/mcs/; revision=5790

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/FontUnit.cs
mcs/class/System.Web/System.Web.UI.WebControls/HyperLink.cs
mcs/class/System.Web/System.Web.UI.WebControls/Unit.cs

index ce2171539b886331e540f0b069505258249a5ce8..dd6f964cf63a163916cae0629951a454a89f26f5 100644 (file)
@@ -1,3 +1,9 @@
+2002-07-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * FontUnit.cs: use a hashtable for mapping size name to value.
+       * HyperLink.cs: fixed a bug and a typo.
+       * Unit.cs: some fixes to internal constructor.
+
 2002-07-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * ListControl.cs: fixed a couple of range checks.
index b9242e892c4da33e870b1474730f591b09247c9f..8e3d04cafe1b49ba089df8ffd59e6f1b43c53080 100644 (file)
@@ -12,6 +12,7 @@
  */\r
 \r
 using System;\r
+using System.Collections;\r
 using System.Globalization;\r
 using System.Web;\r
 using System.Web.UI;\r
@@ -34,6 +35,27 @@ namespace System.Web.UI.WebControls
                private FontSize type;\r
                private Unit     val;\r
 \r
+               private static Hashtable sizeTable;\r
+\r
+               static FontUnit ()\r
+               {\r
+                       sizeTable = new Hashtable (CaseInsensitiveHashCodeProvider.Default,\r
+                                                  CaseInsensitiveComparer.Default);\r
+                       sizeTable.Add ("smaller", 2);\r
+                       sizeTable.Add ("larger", 3);\r
+                       sizeTable.Add ("xx-small", 4);\r
+                       sizeTable.Add ("xxsmall", 4);\r
+                       sizeTable.Add ("x-small", 5);\r
+                       sizeTable.Add ("xsmall", 5);\r
+                       sizeTable.Add ("small", 6);\r
+                       sizeTable.Add ("medium", 7);\r
+                       sizeTable.Add ("large", 8);\r
+                       sizeTable.Add ("xlarge", 9);\r
+                       sizeTable.Add ("x-large", 9);\r
+                       sizeTable.Add ("xxlarge", 10);\r
+                       sizeTable.Add ("xx-large", 10);\r
+               }\r
+\r
                public FontUnit(FontSize type)\r
                {\r
                        if(!Enum.IsDefined(typeof(FontSize), type))\r
@@ -78,42 +100,22 @@ namespace System.Web.UI.WebControls
                        if(value != null && value != String.Empty)\r
                        {\r
                                string low = value.ToLower(culture);\r
-                               int index = GetTypeFromString(low);\r
-                               if( index != -1)\r
-                               {\r
-                                       type = (FontSize)index;\r
-                                       return;\r
-                               } else\r
+                               int size = GetTypeFromString(low);\r
+                               if (size != -1)\r
                                {\r
+                                       type = (FontSize)size;\r
+                               } else {\r
                                        val = new Unit(value, culture, UnitType.Point);\r
                                        type = FontSize.AsUnit;\r
                                }\r
                        }\r
                }\r
 \r
-               private int GetTypeFromString(string strVal)\r
-               {\r
-                       string[] values = {\r
-                               "smaller",\r
-                               "larger",\r
-                               "xx-small",\r
-                               "x-small",\r
-                               "small",\r
-                               "medium",\r
-                               "large",\r
-                               "xlarge",\r
-                               "xxlarge"\r
-                       };\r
-                       int i = 0;\r
-                       foreach(string valType in values)\r
-                       {\r
-                               if(strVal == valType)\r
-                               {\r
-                                       return (i + 2);\r
-                               }\r
-                               i++;\r
-                       }\r
-                       return -1;\r
+               private static int GetTypeFromString(string strVal)\r
+               {\r
+                       if (!(sizeTable.ContainsKey (strVal)))\r
+                                       return -1;\r
+                       return (int) sizeTable [strVal];\r
                }\r
 \r
                public static FontUnit Parse(string s)\r
index a4df948a41f6a08e641adeae4591a7f282f265ea..e719e645df4ed2c0274d4d3f180dbf07f2c4a82c 100755 (executable)
@@ -117,7 +117,7 @@ namespace System.Web.UI.WebControls
                        }\r
                        if(Text.Length > 0)\r
                        {\r
-                               base.AddParsedSubObject(Text);\r
+                               base.AddParsedSubObject(new LiteralControl (Text));\r
                                Text = String.Empty;\r
                        }\r
                        base.AddParsedSubObject (obj);\r
@@ -149,7 +149,7 @@ namespace System.Web.UI.WebControls
                        }\r
                        if(HasControls())\r
                        {\r
-                               base.RenderControl(writer);\r
+                               base.RenderContents(writer);\r
                                return;\r
                        }\r
                        writer.Write(Text);\r
index 67c03bbd58de7eaf1c55ead26ea9252bf7637f18..3801fb6d31bedb17f0602711ae44ccea1f5e7ca1 100644 (file)
@@ -109,51 +109,52 @@ namespace System.Web.UI.WebControls
 \r
                internal Unit(string value, CultureInfo culture, UnitType defType)\r
                {\r
-                       this.val = 0;\r
-                       this.type = UnitType.Pixel;\r
-                       if(value == null || value.Length == 0)\r
-                       {\r
-                               this.val = 0;\r
-                               this.type = UnitType.Pixel;\r
+                       string valueTrim;\r
+                       if (value == null || (valueTrim = value.Trim ()).Length == 0) {\r
+                               val = 0;\r
+                               type = UnitType.Pixel;\r
+                               return;\r
                        }\r
-                       if(culture == null)\r
+\r
+                       if (culture == null)\r
                                culture = CultureInfo.CurrentCulture;\r
-                       string strVal = value.Trim().ToLower();\r
+\r
+                       string strVal = valueTrim.ToLower ();\r
+                       int length = strVal.Length;\r
                        char c;\r
                        int start = -1;\r
-                       //int current = 0;\r
-                       for(int i = 0; i < strVal.Length; i++)\r
-                       {\r
-                               c = strVal[i];\r
+                       for (int i = 0; i < length; i++) {\r
+                               c = strVal [i];\r
                                if( (c >= '0' && c <= '9') || (c == '-' || c == '.' || c == ',') )\r
                                        start = i;\r
                        }\r
-                       if(start == -1)\r
-                               throw new ArgumentException();\r
-                       if( (start + 1) < strVal.Length)\r
-                       {\r
-                               this.type = (UnitType)GetTypeFromString(strVal.Substring(start + 1).Trim());\r
-                               this.val  = 0;\r
-                       } else\r
-                       {\r
-                               this.type = defType;\r
-                               this.val  = 0;\r
+                       \r
+                       if (start == -1)\r
+                               throw new ArgumentException("No digits in 'value'");\r
+                       \r
+                       start++;\r
+                       if (start < length) {\r
+                               type = GetTypeFromString (strVal.Substring (start).Trim ());\r
+                               val  = 0;\r
+                       } else {\r
+                               type = defType;\r
                        }\r
-                       try\r
-                       {\r
-                               if(type == UnitType.Pixel)\r
-                                       val = (double) Int32.Parse (strVal.Substring (0, start + 1), culture);\r
+\r
+                       try {\r
+                               string numbers = strVal.Substring (0, start);\r
+                               if (type == UnitType.Pixel)\r
+                                       val = (double) Int32.Parse (numbers, culture);\r
                                else\r
-                                       val = (double) Single.Parse (strVal.Substring (0, start + 1), culture);\r
-                       } catch(Exception)\r
-                       {\r
-                               throw new ArgumentOutOfRangeException();\r
+                                       val = (double) Single.Parse (numbers, culture);\r
+                       } catch (Exception) {\r
+                               throw new FormatException ("Error parsing " + value);\r
                        }\r
-                       if(val < Min || val > Max)\r
-                               throw new ArgumentOutOfRangeException();\r
+\r
+                       if (val < Min || val > Max)\r
+                               throw new ArgumentOutOfRangeException ();\r
                }\r
 \r
-               private UnitType GetTypeFromString(string s)\r
+               private static UnitType GetTypeFromString(string s)\r
                {\r
                        if(s == null || s.Length == 0)\r
                                return UnitType.Pixel;\r