2003-01-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / DataGridColumn.cs
index cc03a3d419da7e2a6961a895d853021db67aaa99..8c210eac4adf75ecbf299e0e7e072c5f4c370353 100644 (file)
-/**\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
+/**
+ * Namespace: System.Web.UI.WebControls
+ * Class:     DataGridColumn
+ *
+ * Author:  Gaurav Vaish
+ * Maintainer: gvaish@iitk.ac.in
+ * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>
+ * Implementation: yes
+ * Status:  100%
+ *
+ * (C) Gaurav Vaish (2002)
+ */
+
+using System;
+using System.Web;
+using System.Web.UI;
+using System.ComponentModel;
+
+namespace System.Web.UI.WebControls
+{
+       [TypeConverter(typeof(ExpandableObjectConverter))]
+       public abstract class DataGridColumn : IStateManager
+       {
+               private StateBag viewState;
+               private bool     marked;
+               private TableItemStyle footerStyle;
+               private TableItemStyle headerStyle;
+               private TableItemStyle itemStyle;
+
+               private DataGrid owner;
+               private bool     designMode;
+
+               public DataGridColumn()
+               {
+                       viewState = new StateBag();
+               }
+
+               internal TableItemStyle FooterStyleInternal
+               {
+                       get
+                       {
+                               return footerStyle;
+                       }
+               }
+
+               internal TableItemStyle HeaderStyleInternal
+               {
+                       get
+                       {
+                               return headerStyle;
+                       }
+               }
+
+               internal TableItemStyle ItemStyleInternal
+               {
+                       get
+                       {
+                               return itemStyle;
+                       }
+               }
+
+               public virtual TableItemStyle FooterStyle
+               {
+                       get
+                       {
+                               if(footerStyle == null)
+                               {
+                                       footerStyle = new TableItemStyle();
+                                       if(IsTrackingViewState)
+                                       {
+                                               footerStyle.TrackViewState();
+                                       }
+                               }
+                               return footerStyle;
+                       }
+               }
+
+               public virtual TableItemStyle HeaderStyle
+               {
+                       get
+                       {
+                               if(headerStyle == null)
+                               {
+                                       headerStyle= new TableItemStyle();
+                                       if(IsTrackingViewState)
+                                       {
+                                               headerStyle.TrackViewState();
+                                       }
+                               }
+                               return headerStyle;
+                       }
+               }
+
+               public virtual TableItemStyle ItemStyle
+               {
+                       get
+                       {
+                               if(itemStyle == null)
+                               {
+                                       itemStyle = new TableItemStyle();
+                                       if(IsTrackingViewState)
+                                       {
+                                               itemStyle.TrackViewState();
+                                       }
+                               }
+                               return itemStyle;
+                       }
+               }
+
+               public virtual string FooterText
+               {
+                       get
+                       {
+                               object o = ViewState["FooterText"];
+                               if(o != null)
+                               {
+                                       return (string)o;
+                               }
+                               return String.Empty;
+                       }
+                       set
+                       {
+                               ViewState["FooterText"] = value;
+                               OnColumnChanged();
+                       }
+               }
+
+               public virtual string HeaderImageUrl
+               {
+                       get
+                       {
+                               object o = ViewState["HeaderImageUrl"];
+                               if(o != null)
+                               {
+                                       return (string)o;
+                               }
+                               return String.Empty;
+                       }
+                       set
+                       {
+                               ViewState["HeaderImageUrl"] = value;
+                               OnColumnChanged();
+                       }
+               }
+
+               public virtual string HeaderText
+               {
+                       get
+                       {
+                               object o = ViewState["HeaderText"];
+                               if(o != null)
+                               {
+                                       return (string)o;
+                               }
+                               return String.Empty;
+                       }
+                       set
+                       {
+                               ViewState["HeaderText"] = value;
+                               OnColumnChanged();
+                       }
+               }
+
+               public virtual string SortExpression
+               {
+                       get
+                       {
+                               object o = ViewState["SortExpression"];
+                               if(o != null)
+                               {
+                                       return (string)o;
+                               }
+                               return String.Empty;
+                       }
+                       set
+                       {
+                               ViewState["SortExpression"] = value;
+                               OnColumnChanged();
+                       }
+               }
+
+               public bool Visible
+               {
+                       get
+                       {
+                               object o = ViewState["Visible"];
+                               if(o != null)
+                               {
+                                       return (bool)o;
+                               }
+                               return true;
+                       }
+                       set
+                       {
+                               ViewState["Visible"] = value;
+                               OnColumnChanged();
+                       }
+               }
+
+               public virtual void Initialize()
+               {
+                       if(owner != null && owner.Site != null)
+                       {
+                               designMode = owner.Site.DesignMode;
+                       }
+               }
+
+               public virtual void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)
+               {
+                       switch(itemType)
+                       {
+                               case ListItemType.Header : InitializeCellHeader(cell, columnIndex);
+                                                          break;
+                               case ListItemType.Footer : InitializeCellFooter(cell, columnIndex);
+                                                          break;
+                               default                  : return;
+                       }
+               }
+
+               private void InitializeCellHeader(TableCell cell, int columnIndex)
+               {
+                       WebControl ctrl = null;
+                       bool       sort = true;
+                       string     sortExpr = "";
+                       ImageButton headButton;
+                       Image       headImage;
+                       LinkButtonInternal link;
+
+                       if(owner != null)
+                       {
+                               sort = owner.AllowSorting;
+                       }
+                       if(sort)
+                       {
+                               sortExpr = SortExpression;
+                               if(sortExpr.Length == 0)
+                               {
+                                       sort = false;
+                               }
+                       }
+                       if(HeaderImageUrl.Length > 0)
+                       {
+                               if(sort)
+                               {
+                                       headButton = new ImageButton();
+                                       headButton.ImageUrl = HeaderImageUrl;
+                                       headButton.CommandName = "Sort";
+                                       headButton.CommandArgument = sortExpr;
+                                       headButton.CausesValidation = false;
+                                       ctrl = headButton;
+                               } else
+                               {
+                                       headImage = new Image();
+                                       headImage.ImageUrl = HeaderImageUrl;
+                                       ctrl = headImage;
+                               }
+                       } else
+                       {
+                               if(sort)
+                               {
+                                       link = new LinkButtonInternal();
+                                       link.Text = HeaderText;
+                                       link.CommandName = "Sort";
+                                       link.CommandArgument = sortExpr;
+                                       link.CausesValidation = false;
+                                       ctrl = link;
+                               } else
+                               {
+                                       if(HeaderText.Length > 0)
+                                       {
+                                               cell.Text = HeaderText;
+                                       } else
+                                       {
+                                               cell.Text = "&nbsp;";
+                                       }
+                               }
+                       }
+                       if(ctrl != null)
+                       {
+                               cell.Controls.Add(ctrl);
+                       }
+               }
+
+               private void InitializeCellFooter(TableCell cell, int columnIndex)
+               {
+                       cell.Text = (FooterText.Length > 0 ? FooterText : "&nbsp;");
+               }
+
+               public override string ToString()
+               {
+                       return String.Empty;
+               }
+
+               protected bool DesignMode
+               {
+                       get
+                       {
+                               return designMode;
+                       }
+               }
+
+               protected DataGrid Owner
+               {
+                       get
+                       {
+                               return owner;
+                       }
+               }
+
+               protected StateBag ViewState
+               {
+                       get
+                       {
+                               return viewState;
+                       }
+               }
+
+               /// <summary>
+               /// Undocumented
+               /// </summary>
+               protected virtual void OnColumnChanged()
+               {
+                       if(owner != null)
+                       {
+                               owner.OnColumnsChanged();
+                       }
+               }
+
+               internal void SetOwner (DataGrid datagrid)
+               {
+                       owner = datagrid;
+               }
+               
+               protected virtual object SaveViewState()
+               {
+                       object[] states = new object[4];
+                       states[0] = ViewState.SaveViewState();
+                       states[1] = (footerStyle == null ? null : footerStyle.SaveViewState());
+                       states[2] = (headerStyle == null ? null : headerStyle.SaveViewState());
+                       states[3] = (itemStyle == null ? null : itemStyle.SaveViewState());
+                       return states;
+               }
+
+               protected virtual void LoadViewState(object savedState)
+               {
+                       if(savedState!= null)
+                       {
+                               object[] states = (object[]) savedState;
+                               if(states != null)
+                               {
+                                       ViewState.LoadViewState(states[0]);
+                                       FooterStyle.LoadViewState(states[1]);
+                                       HeaderStyle.LoadViewState(states[2]);
+                                       ItemStyle.LoadViewState(states[3]);
+                               }
+                       }
+               }
+
+               protected virtual void TrackViewState()
+               {
+                       marked = true;
+                       ViewState.TrackViewState();
+                       if(footerStyle != null)
+                       {
+                               footerStyle.TrackViewState();
+                       }
+                       if(headerStyle != null)
+                       {
+                               headerStyle.TrackViewState();
+                       }
+                       if(itemStyle != null)
+                       {
+                               itemStyle.TrackViewState();
+                       }
+               }
+
+               protected bool IsTrackingViewState
+               {
+                       get
+                       {
+                               return marked;
+                       }
+               }
+
+               void IStateManager.LoadViewState(object savedState)
+               {
+                       LoadViewState(savedState);
+               }
+
+               object IStateManager.SaveViewState()
+               {
+                       return SaveViewState();
+               }
+
+               void IStateManager.TrackViewState()
+               {
+                       TrackViewState();
+               }
+
+               bool IStateManager.IsTrackingViewState
+               {
+                       get
+                       {
+                               return IsTrackingViewState;
+                       }
+               }
+       }
+}