2001-12-20 Gaurav Vaish <gvaish@iitk.ac.in>
authorGaurav Vaish <gvaish@mono-cvs.ximian.com>
Wed, 19 Dec 2001 17:34:12 +0000 (17:34 -0000)
committerGaurav Vaish <gvaish@mono-cvs.ximian.com>
Wed, 19 Dec 2001 17:34:12 +0000 (17:34 -0000)
* UI.WebControls/*.cs
   -- on the way. FontInfo completed

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

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/FontInfo.cs
mcs/class/System.Web/System.Web.UI.WebControls/Style.cs

index 14ce50397cef71bafb825f46707d30b6e4df24d7..29460f384f400cec42455315c7f4246b541747e8 100644 (file)
@@ -1,6 +1,10 @@
 2001-12-19     Gaurav Vaish <gvaish@iitk.ac.in>\r
 \r
-       ListItemCollection.cs       - Initial Implementation\r
+       ListItemCollection.cs       - Completed\r
+       ListItem.cs                 - Initial Implementation\r
+       Style.cs                    - Initial Implementation\r
+\r
+  Right now I am in a total mood to do a successful build. Creating so many classes, completing classes in System.Web System.Web.UI namespaces.\r
 \r
 2001-12-18     Gaurav Vaish <gvaish@iitk.ac.in>\r
 \r
index 8ff08a13f6fcc7d9e8a59d613886d6dfa182270c..c4f997b5912706cc546ce74ed681d4ce8389254d 100755 (executable)
@@ -6,7 +6,7 @@
  * Maintainer: gvaish@iitk.ac.in\r
  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
  * Implementation: yes\r
- * Status:  80%\r
+ * Status:  100%\r
  * \r
  * (C) Gaurav Vaish (2001)\r
  */\r
@@ -21,34 +21,25 @@ namespace System.Web.UI.WebControls
 {\r
        public sealed class FontInfo\r
        {\r
-               private bool bold;\r
-               private bool italic;\r
-               private bool overline;\r
-               private bool strikeout;\r
-               private bool underline;\r
-               private string name;            //TODO: This will have the value of names[0] by default\r
-               private string[] names;         //TODO: How do get the list of fonts available?\r
-               private FontUnit size = FontUnit.Empty;\r
+               private Style infoOwner;                                \r
                \r
-               internal FontInfo()\r
+               internal FontInfo(Style owner)\r
                {\r
-                       bold      = false;\r
-                       italic    = false;\r
-                       overline  = false;\r
-                       strikeout = false;\r
-                       underline = false;\r
-                       name      = string.Empty;\r
+                       infoOwner = owner;\r
                }\r
                \r
                public bool Bold\r
                {\r
                        get\r
                        {\r
-                               return bold;\r
+                               if(infoOwner.IsSet(Style.FONT_BOLD))\r
+                                       return (bool)(infoOwner.ViewState["FontInfoBold"]);\r
+                               return false;\r
                        }\r
                        set\r
                        {\r
-                               bold = value;\r
+                               infoOwner.ViewState["FontInfoBold"] = value;\r
+                               infoOwner.Set(Style.FONT_BOLD);\r
                        }\r
                }\r
                \r
@@ -56,11 +47,14 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return italic;\r
+                               if(infoOwner.IsSet(Style.FONT_ITALIC))\r
+                                       return (bool)(infoOwner.ViewState["FontInfoItalic"]);\r
+                               return false;\r
                        }\r
                        set\r
                        {\r
-                               italic = value;\r
+                               infoOwner.ViewState["FontInfoItalic"] = value;\r
+                               infoOwner.Set(Style.FONT_ITALIC);\r
                        }\r
                }\r
                \r
@@ -68,11 +62,14 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return overline;\r
+                               if(infoOwner.IsSet(Style.FONT_OLINE))\r
+                                       return (bool)(infoOwner.ViewState["FontInfoOverline"]);\r
+                               return false;\r
                        }\r
                        set\r
                        {\r
-                               overline = value;\r
+                               infoOwner.ViewState["FontInfoOverline"] = value;\r
+                               infoOwner.Set(Style.FONT_OLINE);\r
                        }\r
                }\r
                \r
@@ -80,11 +77,14 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return strikeout;\r
+                               if(infoOwner.IsSet(Style.FONT_STRIKE))\r
+                                       return (bool)(infoOwner.ViewState["FontInfoStrikeout"]);\r
+                               return false;\r
                        }\r
                        set\r
                        {\r
-                               strikeout = value;\r
+                               infoOwner.ViewState["FontInfoStrikeout"] = value;\r
+                               infoOwner.Set(Style.FONT_STRIKE);\r
                        }\r
                }\r
                \r
@@ -92,108 +92,145 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return underline;\r
+                               if(infoOwner.IsSet(Style.FONT_ULINE))\r
+                                       return (bool)(infoOwner.ViewState["FontInfoUnderline"]);\r
+                               return false;\r
                        }\r
                        set\r
                        {\r
-                               underline = value;\r
+                               infoOwner.ViewState["FontInfoUnderline"] = value;\r
+                               infoOwner.Set(Style.FONT_ULINE);\r
                        }\r
                }\r
                \r
-               public string Name\r
+               public FontUnit Size\r
                {\r
                        get\r
                        {\r
-                               return name;\r
+                               if(infoOwner.IsSet(Style.FONT_SIZE))\r
+                                       return (FontUnit)(infoOwner.ViewState["FontInfoSize"]);\r
+                               return FontUnit.Empty;\r
                        }\r
                        set\r
                        {\r
-                               name = value;\r
+                               infoOwner.ViewState["FontInfoSize"] = value;\r
+                               infoOwner.Set(Style.FONT_SIZE);\r
                        }\r
                }\r
                \r
-               public string[] Names\r
+               public string Name\r
                {\r
                        get\r
                        {\r
-                               return names;\r
+                               if(Names!=null)\r
+                                       return Names[0];\r
+                               return String.Empty;\r
                        }\r
                        set\r
                        {\r
-                               names = value;\r
-                               name = names[0];\r
+                               if(value == null)\r
+                                       throw new ArgumentException();\r
+                               string[] strArray = null;\r
+                               if(value.Length > 0)\r
+                               {\r
+                                       strArray = new string[1];\r
+                                       strArray[0] = value;\r
+                               }\r
+                               Names = strArray;\r
                        }\r
                }\r
-\r
-               //TODO: To throw exception if the index is negative\r
-               public FontUnit Size\r
+               \r
+               public string[] Names\r
                {\r
                        get\r
                        {\r
-                               return size;\r
+                               if(infoOwner.IsSet(Style.FONT_NAMES))\r
+                                       return (string[])(infoOwner.ViewState["FontInfoNames"]);\r
+                               return (new string[0]);\r
                        }\r
                        set\r
                        {\r
-                               size = value;\r
+                               infoOwner.ViewState["FontInfoNames"] = value;\r
+                               infoOwner.Set(Style.FONT_NAMES);\r
                        }\r
                }\r
                \r
-               public void CopyFrom(FontInfo from)\r
+               internal void Reset()\r
                {\r
-                       //TODO: What a rubbish way to accomplish the task\r
-                       /*this.bold = from.Bold;\r
-                       this.italic = from.Italic;\r
-                       this.name = from.Name;\r
-                       this.names = from.Names;\r
-                       this.overline = from.Overline;\r
-                       this.size = from.Size;*/\r
-                       //TODO: Let me try Relflection\r
-                       Type t = from.GetType();\r
-                       MethodInfo[] fi = t.GetMethods();\r
-                       foreach(MethodInfo f in fi)\r
-                       {\r
-                               //System.Console.WriteLine("Field: {0}", f.Name);\r
-                               if(f.Name.StartsWith("get_"))\r
-                               {\r
-                                       System.Console.WriteLine("\tStarts with get_");\r
-                               }\r
-                       }\r
+                       if(infoOwner.IsSet(Style.FONT_NAMES))\r
+                               infoOwner.ViewState.Remove("FontInfoNames");\r
+                       if(infoOwner.IsSet(Style.FONT_BOLD))\r
+                               infoOwner.ViewState.Remove("FontInfoBold");\r
+                       if(infoOwner.IsSet(Style.FONT_ITALIC))\r
+                               infoOwner.ViewState.Remove("FontInfoItalic");\r
+                       if(infoOwner.IsSet(Style.FONT_STRIKE))\r
+                               infoOwner.ViewState.Remove("FontInfoStrikeout");\r
+                       if(infoOwner.IsSet(Style.FONT_OLINE))\r
+                               infoOwner.ViewState.Remove("FontInfoOverline");\r
+                       if(infoOwner.IsSet(Style.FONT_ULINE))\r
+                               infoOwner.ViewState.Remove("FontInfoUnderline");\r
+                       if(infoOwner.IsSet(Style.FONT_SIZE) && infoOwner.Size != FontUnit.Empty)\r
+                               infoOwner.ViewState.Remove("FontInfoSize");\r
                }\r
                \r
-               private void ListFields(FontInfo from)\r
+               internal Style Owner\r
                {\r
-                       Type t = from.GetType();\r
-                       MethodInfo[] fi = t.GetMethods();\r
-                       foreach(MethodInfo f in fi)\r
+                       get\r
                        {\r
-                               System.Console.WriteLine("Field: {0}", f.Name);\r
-                               if(f.Name.StartsWith("get_"))\r
-                               {\r
-                                       System.Console.WriteLine("\tStarts with get_");\r
-                               }\r
+                               return infoOwner;\r
                        }\r
                }\r
-\r
-               //TODO: after CopyFrom is implemented\r
-               public void MergeWith(FontInfo with)\r
+               \r
+               public void CopyFrom(FontInfo source)\r
                {\r
+                       if(source!=null)\r
+                       {\r
+                               if(source.IsSet(Style.FONT_NAMES))\r
+                                       Names = source.Names;\r
+                               if(source.IsSet(Style.FONT_BOLD))\r
+                                       Bold = source.Bold;\r
+                               if(source.IsSet(Style.FONT_ITALIC))\r
+                                       Italic = source.Italic;\r
+                               if(source.IsSet(Style.FONT_STRIKE))\r
+                                       Strikeout = source.Strikeout;\r
+                               if(source.IsSet(Style.FONT_OLINE))\r
+                                       Overline = source.Overline;\r
+                               if(source.IsSet(Style.FONT_ULINE))\r
+                                       Underline = source.Underline;\r
+                               if(source.IsSet(Style.FONT_SIZE) && source.Size != FontUnit.Empty)\r
+                                       Size = source.Size;\r
+                       }\r
                }\r
-\r
-               public override string ToString()\r
+               \r
+               public void MergeWith(FontInfo with)\r
                {\r
-                       string retVal = this.name;\r
-                       if(this.size != FontUnit.Empty)\r
-                       {\r
-                               this.name += ("," + this.size);\r
+                       if(with!=null)\r
+                       {\r
+                               if(source.IsSet(Style.FONT_NAMES) && !infoOwner.IsSet(Style.FONT_NAMES))\r
+                                       Names = source.Names;\r
+                               if(source.IsSet(Style.FONT_BOLD && !infoOwner.IsSet(Style.FONT_BOLD)))\r
+                                       Bold = source.Bold;\r
+                               if(source.IsSet(Style.FONT_ITALIC && !infoOwner.IsSet(Style.FONT_ITALIC)))\r
+                                       Italic = source.Italic;\r
+                               if(source.IsSet(Style.FONT_STRIKE && !infoOwner.IsSet(Style.FONT_STRIKE)))\r
+                                       Strikeout = source.Strikeout;\r
+                               if(source.IsSet(Style.FONT_OLINE && !infoOwner.IsSet(Style.FONT_OLINE)))\r
+                                       Overline = source.Overline;\r
+                               if(source.IsSet(Style.FONT_ULINE && !infoOwner.IsSet(Style.FONT_ULINE)))\r
+                                       Underline = source.Underline;\r
+                               if(source.IsSet(Style.FONT_SIZE) && source.Size != FontUnit.Empty && !infoOwner.IsSet(Style.FONT_SIZE))\r
+                                       Size = source.Size;\r
                        }\r
-                       return retVal;\r
                }\r
-\r
-               /*\r
-               protected object MemberwiseClone()\r
+               \r
+               public bool ShouldSerializeNames()\r
                {\r
+                       return (Names.Length > 0);\r
+               }\r
+               \r
+               protected override ToString()\r
+               {\r
+                       return ( (Name.Length > 0) ? (Name.ToString() + ", " + Size.ToString()) : Size.ToString() );\r
                }\r
-//*/\r
-\r
        }\r
 }\r
index 9e21cb5761c56f2703f98c3d8d20f7fc8f7fc874..8ea03f2191aefc194873213033e695ad2e336d28 100644 (file)
@@ -13,6 +13,8 @@
 \r
 using System;\r
 using System.Collections;\r
+using System.Drawing;\r
+using System.ComponentModel;\r
 using System.Web;\r
 using System.Web.UI;\r
 \r
@@ -20,14 +22,32 @@ namespace System.Web.UI.WebControls
 {\r
        public class Style : Component, IStateManager\r
        {\r
-               internal static MARKED    = 0x01;\r
-               internal static BACKCOLOR = (0x01 < 1);\r
+               internal static int MARKED      = (0x01 << 0);\r
+               internal static int BACKCOLOR   = (0x01 << 1);\r
+               internal static int BORDERCOLOR = (0x01 << 2);\r
+               internal static int BORDERSTYLE = (0x01 << 3);\r
+               internal static int BORDERWIDTH = (0x01 << 4);\r
+               internal static int CSSCLASS    = (0x01 << 5);\r
+               internal static int FORECOLOR   = (0x01 << 6);\r
+               internal static int HEIGHT      = (0x01 << 7);\r
+               internal static int WIDTH       = (0x01 << 8);\r
+               internal static int FONT_BOLD   = (0x01 << 9);\r
+               internal static int FONT_ITALIC = (0x01 << 10);\r
+               internal static int FONT_NAMES  = (0x01 << 11);\r
+               internal static int FONT_SIZE   = (0x01 << 12);\r
+               internal static int FONT_STRIKE = (0x01 << 13);\r
+               internal static int FONT_OLINE  = (0x01 << 14);\r
+               internal static int FONT_ULINE  = (0x01 << 15);\r
                \r
+               internal static string selectionBitString = "_!SBS";\r
+\r
                private StateBag viewState;\r
                private bool     marked;\r
                private int      selectionBits;\r
-               private bool     selfStateBag;\r
-               \r
+               private bool     selfStateBag;                          \r
+\r
+               private FontInfo font;\r
+\r
                public Style()\r
                {\r
                        Initialize(null);\r
@@ -45,7 +65,7 @@ namespace System.Web.UI.WebControls
                {\r
                        viewState     = bag;\r
                        marked        = false;\r
-                       selectionBits = 0x00;\r
+                       selectionBits = 0x00;                   \r
                }\r
                \r
                StateBag ViewState\r
@@ -61,8 +81,163 @@ namespace System.Web.UI.WebControls
                                return stateBag;\r
                        }\r
                }\r
+\r
+               internal bool IsSet(int bit)\r
+               {\r
+                       return ( (selectionBits & bitIndex) != 0x00);\r
+               }\r
+               \r
+               virtual void Set(int bit)\r
+               {\r
+                       selectionBits |= bit;\r
+                       if(IsTrackingViewState)\r
+                               selectionBits |= MARKED;\r
+               }\r
+               \r
+               public Color BackColor\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(BACKCOLOR))\r
+                                       return (Color)ViewState["BackColor"];\r
+                               return Color.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["BackColor"] = value;\r
+                               Set(BACKCOLOR);\r
+                       }\r
+               }\r
+               \r
+               public Color BorderColor\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(BORDERCOLOR))\r
+                                       return (Color)ViewState["BorderColor"];\r
+                               return Color.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["BorderColor"] = value;\r
+                               Set(BORERCOLOR);\r
+                       }\r
+               }\r
+               \r
+               public BorderStyle BorderStyle\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(BORDERSTYLE))\r
+                                       return (Color)ViewState["BorderStyle"];\r
+                               return BorderStyle.NotSet;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["BorderStyle"] = value;\r
+                               Set(BORDERSTYLE);\r
+                       }\r
+               }\r
+               \r
+               public Unit BorderWidth\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(BORDERWIDTH))\r
+                                       return (Unit)ViewState["BorderWidth"];\r
+                               return Unit.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["BorderWidth"] = value;\r
+                               Set(BORDERWIDTH);\r
+                       }\r
+               }\r
+               \r
+               public string CssClass\r
+               {\r
+                       get\r
+                       {\r
+                               if(Set(CSSCLASS))\r
+                                       return (string)ViewState["CssClass"];\r
+                               return string.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["CssClass"] = value;\r
+                               Set(CSSCLASS);\r
+                       }\r
+               }\r
+               \r
+               public Color ForeColor\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(FORECOLOR))\r
+                                       return (Color)ViewState["ForeColor"];\r
+                               return Color.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["ForeColor"] = value;\r
+                               Set(FORECOLOR);\r
+                       }\r
+               }\r
                \r
+               public Unit Height\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(HEIGHT))\r
+                                       return (Unit)ViewState["Height"];\r
+                               return Unit.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["Height"] = value;\r
+                               Set(HEIGHT);\r
+                       }\r
+               }\r
                \r
+               public Unit Width\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(WIDTH))\r
+                                       return (Unit)ViewState["Width"];\r
+                               return Unit.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["Width"] = value;\r
+                               Set(HEIGHT);\r
+                       }\r
+               }\r
+               \r
+               public FontInfo Font\r
+               {\r
+                       get\r
+                       {\r
+                               if(font==null)\r
+                                       font = new FontInfo(this);\r
+                               return font;\r
+                       }\r
+               }\r
+               \r
+               public void AddAttributesToRender(HtmlTextWriter writer)\r
+               {\r
+                       AddAttributesToRender(writer, null);\r
+               }\r
+               \r
+               public void AddAttributesToRender(HtmlTextWriter writer, WebControl owner)\r
+               {\r
+                       if(Set(CSSCLASS))\r
+                       {\r
+                               string cssClass = (string)ViewState["CssClass"];\r
+                               //if(cssClass.Length > 0)\r
+                               //      writer.Add(HtmlTextWriterAttribute.\r
+                       }\r
+               }\r
        }\r
 }\r
 \r