2002-03-03 Gaurav Vaish <gvaish@iitk.ac.in>
authorGaurav Vaish <gvaish@mono-cvs.ximian.com>
Sun, 3 Mar 2002 13:44:50 +0000 (13:44 -0000)
committerGaurav Vaish <gvaish@mono-cvs.ximian.com>
Sun, 3 Mar 2002 13:44:50 +0000 (13:44 -0000)
* **.cs: Some completed, some left.

* ChangeLog, TODO: The best places to see what I do. Highly verbose.

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

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/DataGridColumn.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/DataListItem.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/EditCommandColumn.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/LinkButtonInternal.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/TODO

index 289a851ecd9e6a26c2771526513ec86381f8cfff..e90102e5c89ba59e374ce1cae3a62be14d17da1c 100644 (file)
@@ -7,6 +7,11 @@
                    annoyinglyc crazy-driving class, basically the method
                    EvaluateIsValid().
        * RangeValidator.cs           - Completed.
+       * DataGridColumn.cs           - Completed.
+       * EditCommandColumn.cs        - All is complete except for the
+                   InitializeCell(TableCell, int, ListItemType) method.
+       * DataListItem.cs             - All done except for a longish method
+                   RenderItem(HtmlTextWriter, bool, bool)
 
 2002-03-02      Gaurav Vaish <gvaish@iitk.ac.in>
 
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/DataGridColumn.cs b/mcs/class/System.Web/System.Web.UI.WebControls/DataGridColumn.cs
new file mode 100644 (file)
index 0000000..cc03a3d
--- /dev/null
@@ -0,0 +1,369 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     DataGridColumn\r
+ * \r
+ * Author:  Gaurav Vaish\r
+ * Maintainer: gvaish@iitk.ac.in\r
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
+ * Implementation: yes\r
+ * Status:  100%\r
+ * \r
+ * (C) Gaurav Vaish (2002)\r
+ */\r
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public class DataGridColumn : IStateManager\r
+       {\r
+               private StateBag viewState;\r
+               private bool     marked;\r
+               private TableItemStyle footerStyle;\r
+               private TableItemStyle headerStyle;\r
+               private TableItemStyle itemStyle;\r
+\r
+               private DataGrid owner;\r
+               private bool     designMode;\r
+\r
+               public DataGridColumn()\r
+               {\r
+                       viewStat = new StateBag();\r
+               }\r
+\r
+               public virtual TableItemStyle FooterStyle\r
+               {\r
+                       get\r
+                       {\r
+                               if(footerStyle == null)\r
+                               {\r
+                                       footerStyle = new TableItemStyle();\r
+                                       if(IsTrackingViewState)\r
+                                       {\r
+                                               footerStyle.TrackViewState();\r
+                                       }\r
+                               }\r
+                               return footerStyle;\r
+                       }\r
+               }\r
+\r
+               public virtual TableItemStyle HeaderStyle\r
+               {\r
+                       get\r
+                       {\r
+                               if(headerStyle == null)\r
+                               {\r
+                                       headerStyle= new TableItemStyle();\r
+                                       if(IsTrackingViewState)\r
+                                       {\r
+                                               headerStyle.TrackViewState();\r
+                                       }\r
+                               }\r
+                               return headerStyle;\r
+                       }\r
+               }\r
+\r
+               public virtual TableItemStyle ItemStyle\r
+               {\r
+                       get\r
+                       {\r
+                               if(itemStyle == null)\r
+                               {\r
+                                       itemStyle = new TableItemStyle();\r
+                                       if(IsTrackingViewState)\r
+                                       {\r
+                                               itemStyle.TrackViewState();\r
+                                       }\r
+                               }\r
+                               return itemStyle;\r
+                       }\r
+               }\r
+\r
+               public virtual string FooterText\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["FooterText"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["FooterText"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string HeaderImageUrl\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["HeaderImageUrl"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["HeaderImageUrl"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string HeaderText\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["HeaderText"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["HeaderText"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string SortExpression\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["SortExpression"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["SortExpression"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public bool Visible\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["Visible"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (bool)o;\r
+                               }\r
+                               return true;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["Visible"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+               \r
+               public virtual void Initialize()\r
+               {\r
+                       if(owner != null && owner.Site != null)\r
+                       {\r
+                               designMode = owner.Site.DesignMode;\r
+                       }\r
+               }\r
+               \r
+               public virtual void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)\r
+               {\r
+                       switch(itemType)\r
+                       {\r
+                               ListItemType.Header : InitializeCellHeader(cell, columnIndex);\r
+                                                     break;\r
+                               ListItemType.Footer : InitializeCellFooter(cell, columnIndex);\r
+                                                     break;\r
+                               default             : return;\r
+                       }\r
+               }\r
+\r
+               private void InitializeCellHeader(TableCell cell, int columnIndex)\r
+               {\r
+                       WebControl ctrl = null;\r
+                       bool       sort = true;\r
+                       string     sortExpr;\r
+                       ImageButton headButton;\r
+                       Image       headImage;\r
+                       LinkButtonInternal link;\r
+\r
+                       if(owner != null)\r
+                       {\r
+                               sort = owner.AllowSorting;\r
+                       }\r
+                       if(sort)\r
+                       {\r
+                               sortExpr = SortExpression;\r
+                               if(sortExpr.Length == 0)\r
+                               {\r
+                                       sort = false;\r
+                               }\r
+                       }\r
+                       if(HeaderImageUrl.Length > 0)\r
+                       {\r
+                               if(sort)\r
+                               {\r
+                                       headButton = new ImageButton();\r
+                                       headButton.ImageUrl = HeaderImageUrl;\r
+                                       headButton.CommandName = "Sort";\r
+                                       headButton.CommandArgument = sortExpr;\r
+                                       headButton.CausesValidation = false;\r
+                                       ctrl = headButton;\r
+                               } else\r
+                               {\r
+                                       headImage = new Image();\r
+                                       headImage.ImageUrl = HeaderImageUrl;\r
+                                       ctrl = headImage;\r
+                               }\r
+                       } else\r
+                       {\r
+                               if(sort)\r
+                               {\r
+                                       link = new LinkButtonInternal();\r
+                                       link.Text = HeaderText;\r
+                                       link.CommandName = "Sort";\r
+                                       link.CommandArgument = sortExpr;\r
+                                       link.CausesValidation = false;\r
+                                       ctrl = link;\r
+                               } else\r
+                               {\r
+                                       if(HeaderText.Length > 0)\r
+                                       {\r
+                                               cell.Text = HeaderText;\r
+                                       } else\r
+                                       {\r
+                                               cell.Text = "&nbsp;";\r
+                                       }\r
+                               }\r
+                       }\r
+                       if(ctrl != null)\r
+                       {\r
+                               Controls.Add(ctrl);\r
+                       }\r
+               }\r
+\r
+               private void InitializeCellFooter(TableCell cell, int columnIndex)\r
+               {\r
+                       cell.Text = (FooterText.Length > 0 ? FooterText : "&nbsp;");\r
+               }\r
+               \r
+               public override string ToString()\r
+               {\r
+                       return String.Empty;\r
+               }\r
+               \r
+               protected bool DesignMode\r
+               {\r
+                       get\r
+                       {\r
+                               return designMode;\r
+                       }\r
+               }\r
+               \r
+               protected DataGrid Owner\r
+               {\r
+                       get\r
+                       {\r
+                               return owner;\r
+                       }\r
+               }\r
+               \r
+               protected StateBag ViewState\r
+               {\r
+                       get\r
+                       {\r
+                               return viewState;\r
+                       }\r
+               }\r
+               \r
+               /// <summary>\r
+               /// Undocumented\r
+               /// </summary>\r
+               protected void OnColumnChanged()\r
+               {\r
+                       if(owner != null)\r
+                       {\r
+                               owner.OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               protected virtual object SaveViewState()\r
+               {\r
+                       object[] states = new object[4];\r
+                       states[0] = ViewState.SaveViewState();\r
+                       states[1] = (footerStyle == null ? null : footerStyle.SaveViewState());\r
+                       states[2] = (headerStyle == null ? null : headerStyle.SaveViewState());\r
+                       states[3] = (itemStyle == null ? null : itemStyle.SaveViewState());\r
+                       return states;\r
+               }\r
+               \r
+               protected virtual void LoadViewState(object savedState)\r
+               {\r
+                       if(savedState!= null)\r
+                       {\r
+                               object[] states = (object[]) savedState;\r
+                               if(states != null)\r
+                               {\r
+                                       ViewState.LoadViewState(states[0]);\r
+                                       FooterStyle.LoadViewState(states[1]);\r
+                                       HeaderStyle.LoadViewState(states[2]);\r
+                                       ItemStyle.LoadViewStae(states[3]);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               protected virtual void TrackViewState()\r
+               {\r
+                       marked = true;\r
+                       ViewState.TrackViewState();\r
+                       if(footerStyle != null)\r
+                       {\r
+                               footerStyle.TrackViewState();\r
+                       }\r
+                       if(headerStyle != null)\r
+                       {\r
+                               headerStyle.TrackViewState();\r
+                       }\r
+                       if(itemStyle != null)\r
+                       {\r
+                               itemStyle.TrackViewState();\r
+                       }\r
+               }\r
+               \r
+               void IStateManager.LoadViewState(object savedState)\r
+               {\r
+                       LoadViewState(savedState);\r
+               }\r
+               \r
+               object IStateManager.SaveViewState()\r
+               {\r
+                       return SaveViewState();\r
+               }\r
+               \r
+               void IStateManager.TrackViewState()\r
+               {\r
+                       TrackViewState();\r
+               }\r
+               \r
+               bool IStateManager.IsTrackingViewState\r
+               {\r
+                       get\r
+                       {\r
+                               return marked;\r
+                       }\r
+               }\r
+       }\r
+}\r
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/DataListItem.cs b/mcs/class/System.Web/System.Web.UI.WebControls/DataListItem.cs
new file mode 100644 (file)
index 0000000..5a0e9b2
--- /dev/null
@@ -0,0 +1,79 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     DataListItem\r
+ * \r
+ * Author:  Gaurav Vaish\r
+ * Maintainer: gvaish@iitk.ac.in\r
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
+ * Implementation: yes\r
+ * Status:  95%\r
+ * \r
+ * (C) Gaurav Vaish (2002)\r
+ */\r
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public class DataListItem : WebControl, INamingContainer\r
+       {\r
+               int itemIndex;\r
+               ListItemType itemType;\r
+               object dataItem;\r
+\r
+               public DataListItem(int itemIndex, ListItemType itemType)\r
+               {\r
+                       this.itemIndex = itemIndex;\r
+                       this.itemType  = itemType;\r
+               }\r
+               \r
+               public virtual object DataItem\r
+               {\r
+                       get\r
+                       {\r
+                               return dataItem;\r
+                       }\r
+                       set\r
+                       {\r
+                               dataItem = value;\r
+                       }\r
+               }\r
+               \r
+               public virtual int ItemIndex\r
+               {\r
+                       get\r
+                       {\r
+                               return itemIndex;\r
+                       }\r
+               }\r
+               \r
+               public virtual ListItemType ItemType\r
+               {\r
+                       get\r
+                       {\r
+                               return itemType;\r
+                       }\r
+               }\r
+\r
+               [MonoTODO]\r
+               public virtual void RenderItem(HtmlTextWriter writer, bool extractRows, bool tableLayout)\r
+               {\r
+                       //TODO: Complete me!\r
+               }\r
+               \r
+               protected override Style CreateControlStyle()\r
+               {\r
+                       return new TableItemStyle();\r
+               }\r
+               \r
+               protected override bool OnBubbleEvent(object source, EventArgs e)\r
+               {\r
+                       if(e is CommandEventArgs)\r
+                       {\r
+                               RaiseBubbleEvent(this, new DataListCommandEventArgs(this, source, (CommandEventArgs)e));\r
+                       }\r
+               }\r
+       }\r
+}\r
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/EditCommandColumn.cs b/mcs/class/System.Web/System.Web.UI.WebControls/EditCommandColumn.cs
new file mode 100644 (file)
index 0000000..7779f07
--- /dev/null
@@ -0,0 +1,109 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     EditCommandColumn\r
+ * \r
+ * Author:  Gaurav Vaish\r
+ * Maintainer: gvaish@iitk.ac.in\r
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
+ * Implementation: yes\r
+ * Status:  95%\r
+ * \r
+ * (C) Gaurav Vaish (2002)\r
+ */\r
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public class EditCommandColumn : DataGridColumn\r
+       {\r
+               public EditCommandColumn(): base()\r
+               {\r
+               }\r
+               \r
+               public virtual ButtonColumnType ButtonType\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["ButtonType"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (ButtonColumnType)o;\r
+                               }\r
+                               return ButtonColumnType.LinkButton;\r
+                       }\r
+                       set\r
+                       {\r
+                               if(!Enum.IsDefined(typeof(ButtonColumnType), value))\r
+                               {\r
+                                       throw new ArgumentException();\r
+                               }\r
+                               ViewState["ButtonType"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string CancelText\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["CancelText"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["CancelText"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string EditText\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["EditText"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["EditText"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+\r
+               public virtual string UpdateText\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["UpdateText"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["UpdateText"] = value;\r
+                               OnColumnChanged();\r
+                       }\r
+               }\r
+               \r
+               [MonoTODO]\r
+               public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)\r
+               {\r
+                       base.InitializeCell(cell, columnIndex, itemType);\r
+                       //TODO: I have to read some documents.\r
+               }\r
+       }\r
+}\r
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/LinkButtonInternal.cs b/mcs/class/System.Web/System.Web.UI.WebControls/LinkButtonInternal.cs
new file mode 100644 (file)
index 0000000..54420e8
--- /dev/null
@@ -0,0 +1,56 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     LinkButtonInternal\r
+ * \r
+ * Author:  Gaurav Vaish\r
+ * Maintainer: gvaish@iitk.ac.in\r
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
+ * Implementation: yes\r
+ * Status:  100%\r
+ * \r
+ * (C) Gaurav Vaish (2002)\r
+ */\r
+\r
+using System;\r
+using System.Drawing;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       internal class LinkButtonInternal : LinkButton\r
+       {\r
+               public LinkButtonInternal() : base()\r
+               {\r
+               }\r
+               \r
+               public override void Render(HtmlTextWriter writer)\r
+               {\r
+                       SetForeColor();\r
+                       Render(writer);\r
+               }\r
+               \r
+               private void SetForeColor()\r
+               {\r
+                       if(!ControlStyle.IsSet(Style.FORECOLOR))\r
+                       {\r
+                               Control ctrl = this;\r
+                               Color   foreCol;\r
+                               int     ctr = 0;\r
+                               //FIXME: Should it be 3 or 2? this-> LinkButton-> WebControl-> Control\r
+                               // But control does not have any ForeColor. Need to test.\r
+                               while(ctr < 3)\r
+                               {\r
+                                       ctrl = ctrl.Parent;\r
+                                       foreCol = ctrl.ForeColor;\r
+                                       if(foreCol != Color.Empty)\r
+                                       {\r
+                                               ForeColor = foreCol;\r
+                                               return;\r
+                                       }\r
+                                       ctr++;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
index 4188059dbe209c534806d6f900832365bf6343d3..a60e50dad66b69b581a028a71a0fd64c7ad04b31 100755 (executable)
@@ -34,7 +34,7 @@ All Classes, Interfaces, Structures, Delegates and Enumerations
 & CompareValidator
 CustomValidator
 & DataGrid
-DataGridColumn
+DataGridColumn
 * DataGridColumnCollection
 * DataGridCommandEventArgs
 & DataGridItem
@@ -46,12 +46,12 @@ DataGridPagerStyle
 DataKeyCollection
 & DataList
 * DataListCommandEventArgs
-DataListItem
+DataListItem
 * DataListItemCollecton
 * DataListItemEventArgs
 * DayRenderEventArgs
 * DropDownList
-EditCommandColumn
+EditCommandColumn
 * FontInfo
 * FontNamesConverter
 & FontUnitConverter