-/**\r
- * Namespace: System.Web.UI.WebControls\r
- * Class: Table\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.Globalization;\r
-using System.Web;\r
-using System.Web.UI;\r
-using System.ComponentModel;\r
-\r
-namespace System.Web.UI.WebControls\r
-{\r
- [DefaultProperty("Rows")]\r
- //[Designer("??")]\r
- [ParseChildren(true, "Rows")]\r
- public class Table: WebControl\r
- {\r
- private TableRowCollection rows;\r
-\r
- private class TableRowControlCollection : ControlCollection\r
- {\r
- public TableRowControlCollection(Control owner): base(owner)\r
- {\r
- }\r
-\r
- public override void Add(Control child)\r
- {\r
- if(child is TableRow)\r
- {\r
- Add(child);\r
- return;\r
- }\r
- throw new ArgumentException(HttpRuntime.FormatResourceString("Cannot_Have_Children_Of_Type", "Table", child.GetType().Name.ToString()));\r
- }\r
-\r
- public override void AddAt(int index, Control child)\r
- {\r
- if(child is TableRow)\r
- {\r
- Add(child);\r
- return;\r
- }\r
- throw new ArgumentException(HttpRuntime.FormatResourceString("Cannot_Have_Children_Of_Type", "Table", child.GetType().Name.ToString()));\r
- }\r
- }\r
-\r
- public Table(): base(HtmlTextWriterTag.Table)\r
- {\r
- }\r
-\r
- public virtual string BackImageUrl\r
- {\r
- get\r
- {\r
- if(ControlStyleCreated)\r
- {\r
- return ((TableStyle)ControlStyle).BackImageUrl;\r
- }\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- ((TableStyle)ControlStyle).BackImageUrl = value;\r
- }\r
- }\r
-\r
- public virtual int CellPadding\r
- {\r
- get\r
- {\r
- if(ControlStyleCreated)\r
- {\r
- return ((TableStyle)ControlStyle).CellPadding;\r
- }\r
- return -1;\r
- }\r
- set\r
- {\r
- ((TableStyle)ControlStyle).CellPadding = value;\r
- }\r
- }\r
-\r
- public virtual int CellSpacing\r
- {\r
- get\r
- {\r
- if(ControlStyleCreated)\r
- {\r
- return ((TableStyle)ControlStyle).CellSpacing;\r
- }\r
- return -1;\r
- }\r
- set\r
- {\r
- ((TableStyle)ControlStyle).CellSpacing = value;\r
- }\r
- }\r
-\r
- public virtual GridLines GridLines\r
- {\r
- get\r
- {\r
- if(ControlStyleCreated)\r
- {\r
- return ((TableStyle)ControlStyle).GridLines;\r
- }\r
- return GridLines.None;\r
- }\r
- set\r
- {\r
- ((TableStyle)ControlStyle).GridLines = value;\r
- }\r
- }\r
-\r
- public virtual HorizontalAlign HorizontalAlign\r
- {\r
- get\r
- {\r
- if(ControlStyleCreated)\r
- {\r
- return ((TableStyle)ControlStyle).HorizontalAlign;\r
- }\r
- return HorizontalAlign.NotSet;\r
- }\r
- set\r
- {\r
- ((TableStyle)ControlStyle).HorizontalAlign = value;\r
- }\r
- }\r
-\r
- public virtual TableRowCollection Rows\r
- {\r
- get\r
- {\r
- if(rows == null)\r
- {\r
- rows = new TableRowCollection(this);\r
- }\r
- return rows;\r
- }\r
- }\r
-\r
- protected override void AddAttributesToRender(HtmlTextWriter writer)\r
- {\r
- AddAttributesToRender(writer);\r
- if(!BorderColor.IsEmpty)\r
- {\r
- writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, ColorTranslator.ToHtml(BorderColor));\r
- }\r
-\r
- Unit bw = BorderWidth;\r
- if(GridLines == GridLines.None)\r
- {\r
- bw = Unit.Pixel(0);\r
- } else if(!bw.IsEmpty && bw.Type == UnitType.Pixel)\r
- {\r
- bw = Unit.Pixel(1);\r
- }\r
- writer.AddAttribute(HtmlTextWriterAttribute.Border, ((int)bw.Value).ToString(NumberFormatInfo.InvariantInfo));\r
- }\r
-\r
- protected override ControlCollection CreateControlCollection()\r
- {\r
- return new TableRowControlCollection(this);\r
- }\r
-\r
- protected override Style CreateControlStyle()\r
- {\r
- return new TableStyle(ViewState);\r
- }\r
-\r
- protected override void RenderContents(HtmlTextWriter writer)\r
- {\r
- foreach(object current in Rows)\r
- {\r
- ((TableRow)current).RenderControl(writer);\r
- }\r
- }\r
- }\r
-}
\ No newline at end of file
+//
+// System.Web.UI.WebControls.Table.cs
+//
+// Author:
+// Sebastien Pouliot <sebastien@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.ComponentModel;
+using System.Security.Permissions;
+
+namespace System.Web.UI.WebControls {
+
+ // CAS
+ [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+ [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+ // attributes
+ [DefaultProperty ("Rows")]
+ [Designer ("System.Web.UI.Design.WebControls.TableDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+ [ParseChildren (true, "Rows")]
+#if NET_2_0
+ [SupportsEventValidation]
+ public class Table : WebControl, IPostBackEventHandler {
+#else
+ public class Table : WebControl {
+#endif
+ private TableRowCollection rows;
+
+
+ public Table ()
+ : base (HtmlTextWriterTag.Table)
+ {
+ }
+
+
+#if NET_2_0
+ [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+ [UrlProperty]
+#else
+ [Bindable (true)]
+ [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+#endif
+ [DefaultValue ("")]
+ [WebSysDescription ("")]
+ [WebCategory ("Appearance")]
+ public virtual string BackImageUrl {
+ get {
+ if (!ControlStyleCreated)
+ return String.Empty; // default value
+ return TableStyle.BackImageUrl;
+ }
+ set { TableStyle.BackImageUrl = value; }
+ }
+
+ // note: it seems that Caption and CaptionAlign appeared in 1.1 SP1
+
+ [DefaultValue ("")]
+#if NET_2_0
+ [Localizable (true)]
+#endif
+ [WebSysDescription ("")]
+ [WebCategory ("Accessibility")]
+ public virtual string Caption {
+ get {
+ object o = ViewState ["Caption"];
+ return (o == null) ? String.Empty : (string) o;
+ }
+ set {
+ if (value == null)
+ ViewState.Remove ("Caption");
+ else
+ ViewState ["Caption"] = value;
+ }
+ }
+
+ [DefaultValue (TableCaptionAlign.NotSet)]
+ [WebCategory ("Accessibility")]
+ public virtual TableCaptionAlign CaptionAlign {
+ get {
+ object o = ViewState ["CaptionAlign"];
+ return (o == null) ? TableCaptionAlign.NotSet : (TableCaptionAlign) o;
+ }
+ set {
+ if ((value < TableCaptionAlign.NotSet) || (value > TableCaptionAlign.Right)) {
+ throw new ArgumentOutOfRangeException (Locale.GetText ("Invalid TableCaptionAlign value."));
+ }
+ ViewState ["CaptionAlign"] = value;
+ }
+ }
+
+#if ONLY_1_1
+ [Bindable (true)]
+#endif
+ [DefaultValue (-1)]
+ [WebSysDescription ("")]
+ [WebCategory ("Appearance")]
+ public virtual int CellPadding {
+ get {
+ if (!ControlStyleCreated)
+ return -1; // default value
+ return TableStyle.CellPadding;
+ }
+ set { TableStyle.CellPadding = value; }
+ }
+
+#if ONLY_1_1
+ [Bindable (true)]
+#endif
+ [DefaultValue (-1)]
+ [WebSysDescription ("")]
+ [WebCategory ("Appearance")]
+ public virtual int CellSpacing {
+ get {
+ if (!ControlStyleCreated)
+ return -1; // default value
+ return TableStyle.CellSpacing;
+ }
+ set { TableStyle.CellSpacing = value; }
+ }
+
+#if ONLY_1_1
+ [Bindable (true)]
+#endif
+ [DefaultValue (GridLines.None)]
+ [WebSysDescription ("")]
+ [WebCategory ("Appearance")]
+ public virtual GridLines GridLines {
+ get {
+ if (!ControlStyleCreated)
+ return GridLines.None; // default value
+ return TableStyle.GridLines;
+ }
+ set { TableStyle.GridLines = value; }
+ }
+
+#if ONLY_1_1
+ [Bindable (true)]
+#endif
+ [DefaultValue (HorizontalAlign.NotSet)]
+ [WebSysDescription ("")]
+ [WebCategory ("Layout")]
+ public virtual HorizontalAlign HorizontalAlign {
+ get {
+ if (!ControlStyleCreated)
+ return HorizontalAlign.NotSet; // default value
+ return TableStyle.HorizontalAlign;
+ }
+ set { TableStyle.HorizontalAlign = value; }
+ }
+
+ [MergableProperty (false)]
+ [PersistenceMode (PersistenceMode.InnerDefaultProperty)]
+ [WebSysDescription ("")]
+ public virtual TableRowCollection Rows {
+ get {
+ if (rows == null)
+ rows = new TableRowCollection (this);
+ return rows;
+ }
+ }
+
+ private TableStyle TableStyle {
+ get { return (ControlStyle as TableStyle); }
+ }
+
+
+ protected override void AddAttributesToRender (HtmlTextWriter writer)
+ {
+ base.AddAttributesToRender (writer);
+ if (!ControlStyleCreated || TableStyle.IsEmpty) {
+ // for some reason border=X seems to be always present
+ // and isn't rendered as a style attribute
+ writer.AddAttribute (HtmlTextWriterAttribute.Border, "0");
+ }
+ }
+
+ protected override ControlCollection CreateControlCollection ()
+ {
+ return new RowControlCollection (this);
+ }
+
+ protected override Style CreateControlStyle ()
+ {
+ return new TableStyle (ViewState);
+ }
+
+#if NET_2_0
+ protected internal
+#else
+ protected
+#endif
+ override void RenderContents (HtmlTextWriter writer)
+ {
+ if (HasControls ()) {
+ writer.Indent++;
+ foreach (Control c in Controls) {
+ c.RenderControl (writer);
+ }
+
+ writer.Indent--;
+ }
+ }
+
+
+ // new in Fx 1.1 SP1 (to support Caption and CaptionAlign)
+
+ public override void RenderBeginTag (HtmlTextWriter writer)
+ {
+ base.RenderBeginTag (writer);
+
+ string s = Caption;
+ if (s.Length > 0) {
+ writer.WriteBeginTag ("caption");
+
+ TableCaptionAlign tca = CaptionAlign;
+ if (tca != TableCaptionAlign.NotSet) {
+ writer.WriteAttribute ("align", tca.ToString ());
+ }
+
+ writer.Write (HtmlTextWriter.TagRightChar);
+ writer.Indent++;
+ writer.WriteLine ();
+ writer.Write (s);
+ writer.Indent--;
+ writer.WriteLine ();
+ writer.WriteEndTag ("caption");
+ } else if (HasControls ()) {
+ writer.Indent++;
+ }
+ }
+
+#if NET_2_0
+ void IPostBackEventHandler.RaisePostBackEvent (string argument)
+ {
+ RaisePostBackEvent (argument);
+ }
+
+ [MonoTODO]
+ protected virtual void RaisePostBackEvent (string argument)
+ {
+ }
+#endif
+
+ // inner class
+ protected class RowControlCollection : ControlCollection {
+
+ internal RowControlCollection (Table owner)
+ : base (owner)
+ {
+ }
+
+
+ public override void Add (Control child)
+ {
+ if (child == null)
+ throw new NullReferenceException ("null");
+ if (!(child is TableRow))
+ throw new ArgumentException ("child", Locale.GetText ("Must be an TableRow instance."));
+
+ base.Add (child);
+ }
+
+ public override void AddAt (int index, Control child)
+ {
+ if (child == null)
+ throw new NullReferenceException ("null");
+ if (!(child is TableRow))
+ throw new ArgumentException ("child", Locale.GetText ("Must be an TableRow instance."));
+
+ base.AddAt (index, child);
+ }
+ }
+ }
+}