2003-11-02 Ben Maurer <bmaurer@users.sourceforge.net>
authorBen Maurer <benm@mono-cvs.ximian.com>
Mon, 3 Nov 2003 00:16:59 +0000 (00:16 -0000)
committerBen Maurer <benm@mono-cvs.ximian.com>
Mon, 3 Nov 2003 00:16:59 +0000 (00:16 -0000)
* BulletStyle.cs:
* BulletedListDisplayMode.cs:
* BulletedListEventHandler.cs:
* BulletedList.cs:
* BulletedListEventArgs.cs: V2 controls (yay!)

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

mcs/class/System.Web/System.Web.UI.WebControls/BulletStyle.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/BulletedList.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/BulletedListDisplayMode.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventArgs.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventHandler.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.dll.sources

diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BulletStyle.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BulletStyle.cs
new file mode 100644 (file)
index 0000000..a5648d8
--- /dev/null
@@ -0,0 +1,25 @@
+//
+// System.Web.UI.WebControls.BulletStyle.cs
+//
+// Authors:
+//   Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+
+#if NET_1_2
+namespace System.Web.UI.WebControls {
+       public enum BulletStyle {
+               NotSet,
+               Numbered,
+               LowerAlpha,
+               UpperAlpha,
+               LowerRoman,
+               UpperRoman,
+               Disc,
+               Circle,
+               Square,
+               CustomImage,
+       }
+}
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BulletedList.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BulletedList.cs
new file mode 100644 (file)
index 0000000..24d8e9f
--- /dev/null
@@ -0,0 +1,274 @@
+//
+// System.Web.UI.WebControls.BulletedList.cs
+//
+// Authors:
+//   Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+#if NET_1_2
+using System.IO;
+using System.Collections;
+using System.Globalization;
+using System.Text;
+using System.Drawing;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+
+namespace System.Web.UI.WebControls {
+       public class BulletedList : ListControl, IPostBackEventHandler {
+               
+               [MonoTODO ("we are missing a new style enum, we should be using it")]
+               protected override void AddAttributesToRender (HtmlTextWriter writer)
+               {
+                       const string ListStyleType = "list-style-type";
+                       const string ListStyleImage = "list-style-image";
+                       
+                       bool isNumeric = false;
+                       switch (BulletStyle)
+                       {
+                               case BulletStyle.NotSet:
+                                       break;
+                               
+                               case BulletStyle.Numbered:
+                                       writer.AddStyleAttribute (ListStyleType, "decimal");
+                                       isNumeric = true;
+                                       break;
+                               
+                               case BulletStyle.LowerAlpha:
+                                       writer.AddStyleAttribute (ListStyleType, "lower-alpha");
+                                       isNumeric = true;
+                                       break;
+                               
+                               case BulletStyle.UpperAlpha:
+                                       writer.AddStyleAttribute (ListStyleType, "upper-alpha");
+                                       isNumeric = true;
+                                       break;
+                               
+                               case BulletStyle.LowerRoman:
+                                       writer.AddStyleAttribute (ListStyleType, "lower-roman");
+                                       isNumeric = true;
+                                       break;
+                               
+                               case BulletStyle.UpperRoman:
+                                       writer.AddStyleAttribute (ListStyleType, "lower-roman");
+                                       isNumeric = true;
+                                       break;
+
+                               case BulletStyle.Disc:
+                                       writer.AddStyleAttribute (ListStyleType, "disc");
+                                       break;
+                               
+                               case BulletStyle.Circle:
+                                       writer.AddStyleAttribute (ListStyleType, "circle");
+                                       break;
+                               
+                               case BulletStyle.Square:
+                                       writer.AddStyleAttribute (ListStyleType, "square");
+                                       break;
+                                                               
+                               case BulletStyle.CustomImage:
+                                       writer.AddStyleAttribute (ListStyleImage, "url(" + BulletImageUrl+ ")");
+                                       break;
+                       }
+
+                       if (isNumeric && FirstBulletNumber != 1)
+                               writer.AddAttribute ("start", FirstBulletNumber.ToString ());
+                       
+                       base.AddAttributesToRender (writer);
+               }
+               
+               bool cacheIsEnabled;
+               [MonoTODO ("new bool prop on ListItem: Enabled")]
+               protected virtual void RenderBulletText (ListItem item, int index, HtmlTextWriter writer)
+               {
+                       switch (DisplayMode) {
+                               case BulletedListDisplayMode.Text:
+                                       //if (!item.Enabled) {
+                                       //      writer.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled");
+                                       //      writer.RenderBeginTag (HtmlTextWriterTag.Span);
+                                       //}
+                                       writer.Write (item.Text);
+                                       //if (!item.Enabled)
+                                       //      writer.RenderEndTag ();
+                                       break;
+
+                               case BulletedListDisplayMode.HyperLink:
+                                       //if (cacheIsEnabled && item.Enabled) {
+                                       //      writer.AddAttribute (HtmlTextWriterAttribute.Href, item.Value);
+                                       //      if (Target != "")
+                                       //              writer.AddAttribute(HtmlTextWriterAttribute.Target, this.Target);
+                                       //      
+                                       //}
+                                       //else
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled");
+                                       
+                                       writer.RenderBeginTag (HtmlTextWriterTag.A);
+                                       writer.Write (item.Text);
+                                       writer.RenderEndTag ();
+                                       break;
+
+                               case BulletedListDisplayMode.LinkButton:
+                                       //if (cacheIsEnabled && item.Enabled)
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Href, Page.GetPostBackClientHyperlink (this, (index.ToString (CultureInfo.InvariantCulture))));
+                                       //else
+                                       //      writer.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled");
+                                       writer.RenderBeginTag (HtmlTextWriterTag.A);
+                                       writer.Write (item.Text);
+                                       writer.RenderEndTag ();
+                                       break;
+                       }
+               }
+               
+               protected override void RenderContents (HtmlTextWriter writer)
+               {
+                       cacheIsEnabled = this.Enabled;
+                       int idx = 0;
+                       foreach (ListItem i in Items) {
+                               writer.RenderBeginTag (HtmlTextWriterTag.Li);
+                               this.RenderBulletText (i, idx ++, writer);
+                               writer.RenderEndTag ();
+                       }
+               }
+               
+               [MonoTODO ("ListControl has a CausesValidation prop in v1.2, we need to use it")]
+               void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)
+               {
+                       //if (CausesValidation)
+                       //      Page.Validate ();
+                       
+                       this.OnClick (new BulletedListEventArgs (int.Parse (eventArgument, CultureInfo.InvariantCulture)));
+               }
+                       
+               public override bool AutoPostBack { 
+                       get { return base.AutoPostBack; }
+                       set { throw new NotSupportedException (String.Format ("This property is not supported in {0}", GetType ())); }
+               }
+               
+               public override int SelectedIndex {
+                       get { return base.SelectedIndex; }
+                       set { throw new NotSupportedException (String.Format ("This property is not supported in {0}", GetType ())); }
+               }
+               
+               public override ListItem SelectedItem {
+                       get { return base.SelectedItem; }
+                       set { throw new NotSupportedException (String.Format ("This property is not supported in {0}", GetType ())); }
+               }
+               
+               public virtual string BulletImageUrl {
+                       get {
+                               object ret = ViewState ["BulletImageUrl"];
+                               if (ret != null)
+                                       return (string) ret; 
+                       
+                               return "";
+                       }
+                       set {
+                               ViewState ["BulletImageUrl"] = value;
+                       }
+               }
+               
+               public virtual BulletStyle BulletStyle {
+                       get {
+                               object ret = ViewState ["BulletStyle"];
+                               if (ret != null)
+                                       return (BulletStyle) ret; 
+                       
+                               return BulletStyle.NotSet;
+                       }
+                       set {
+                               if ((int) value < 0 || (int) value > 9)
+                                       throw new ArgumentOutOfRangeException ("value");
+
+                               ViewState ["BulletStyle"] = value;
+                       }
+               }
+               
+               public override ControlCollection Controls { get { return new EmptyControlCollection (this); } }
+               
+               public virtual BulletedListDisplayMode DisplayMode {
+                       get {
+                               object ret = ViewState ["DisplayMode"];
+                               if (ret != null)
+                                       return (BulletedListDisplayMode) ret; 
+                       
+                               return BulletedListDisplayMode.Text;
+                       }
+                       set {
+                               if ((int) value < 0 || (int) value > 2)
+                                       throw new ArgumentOutOfRangeException ("value");
+
+                               ViewState ["DisplayMode"] = value;
+                       }
+               }
+               
+               public virtual int FirstBulletNumber {
+                       get {
+                               object ret = ViewState ["FirstBulletNumber"];
+                               if (ret != null)
+                                       return (int) ret; 
+                       
+                               return 1;
+                       }
+                       set {
+                               ViewState ["FirstBulletNumber"] = value;
+                       }
+               }
+               
+
+               protected override HtmlTextWriterTag TagKey {
+                       get {
+                               switch (BulletStyle) {                  
+                                       case BulletStyle.Numbered:
+                                       case BulletStyle.LowerAlpha:
+                                       case BulletStyle.UpperAlpha:
+                                       case BulletStyle.LowerRoman:
+                                       case BulletStyle.UpperRoman:
+                                               return HtmlTextWriterTag.Ol;
+                                       
+                                       case BulletStyle.NotSet:
+                                       case BulletStyle.Disc:
+                                       case BulletStyle.Circle:
+                                       case BulletStyle.Square:
+                                       case BulletStyle.CustomImage:
+                                       default:
+                                               return HtmlTextWriterTag.Ul;
+                               }
+                       }
+               }
+               
+               public virtual string Target {
+                       get {
+                               object ret = ViewState ["Target"];
+                               if (ret != null)
+                                       return (string) ret; 
+                       
+                               return "";
+                       }
+                       set {
+                               ViewState ["Target"] = value;
+                       }
+               }
+               
+               static readonly object ClickEvent = new object ();
+               public event EventHandler Click
+               {
+                       add {
+                               Events.AddHandler (ClickEvent, value);
+                       }
+                       remove {
+                               Events.RemoveHandler (ClickEvent, value);
+                       }
+               }
+               
+               protected virtual void OnClick (BulletedListEventArgs e)
+               {
+                       if (Events != null) {
+                               EventHandler eh = (EventHandler) (Events [ClickEvent]);
+                               if (eh != null)
+                                       eh (this, e);
+                       }
+               }
+       }
+}
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListDisplayMode.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListDisplayMode.cs
new file mode 100644 (file)
index 0000000..84e0553
--- /dev/null
@@ -0,0 +1,17 @@
+//
+// System.Web.UI.WebControls.BulletedListDisplayMode.cs
+//
+// Authors:
+//   Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+#if NET_1_2
+namespace System.Web.UI.WebControls {
+       public enum BulletedListDisplayMode {
+               Text,
+               HyperLink,
+               LinkButton,
+       }
+}
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventArgs.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventArgs.cs
new file mode 100644 (file)
index 0000000..250aa25
--- /dev/null
@@ -0,0 +1,21 @@
+//
+// System.Web.UI.WebControls.BulletedListEventArgs.cs
+//
+// Authors:
+//   Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+#if NET_1_2
+namespace System.Web.UI.WebControls {
+       public class BulletedListEventArgs : EventArgs {
+               int index;
+               
+               public BulletedListEventArgs (int index) {
+                       this.index = index;
+               }
+               
+               public int Index { get { return index; } }
+       }
+}
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventHandler.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BulletedListEventHandler.cs
new file mode 100644 (file)
index 0000000..1e3f1fd
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// System.Web.UI.WebControls.BulletedListEventHandler.cs
+//
+// Authors:
+//   Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+#if NET_1_2
+namespace System.Web.UI.WebControls {
+       public delegate void BulletedListEventHandler (object sender, BulletedListEventArgs e);
+}
+#endif
\ No newline at end of file
index 7ffb780d8c1f3c3935514e8bd295567b11f38140..ffda9ac47a90a659a5dae8836e343e78c20096ea 100644 (file)
@@ -1,3 +1,11 @@
+2003-11-02 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * BulletStyle.cs:
+       * BulletedListDisplayMode.cs:
+       * BulletedListEventHandler.cs:
+       * BulletedList.cs:
+       * BulletedListEventArgs.cs: V2 controls (yay!)
+
 2003-10-30 Jackson Harper <jackson@ximian.com>
 
        * Repeater.cs: Throw an exception if the datasource is set to
index 311a96aac0a330da1e9577a84571cb88e64d32ff..9a3829cb14b8cd2e05dfd42b181feb279e2f6719 100755 (executable)
@@ -285,6 +285,11 @@ System.Web.UI.WebControls/BaseDataList.cs
 System.Web.UI.WebControls/BaseValidator.cs
 System.Web.UI.WebControls/BorderStyle.cs
 System.Web.UI.WebControls/BoundColumn.cs
+System.Web.UI.WebControls/BulletStyle.cs
+System.Web.UI.WebControls/BulletedList.cs
+System.Web.UI.WebControls/BulletedListDisplayMode.cs
+System.Web.UI.WebControls/BulletedListEventArgs.cs
+System.Web.UI.WebControls/BulletedListEventHandler.cs
 System.Web.UI.WebControls/Button.cs
 System.Web.UI.WebControls/ButtonColumn.cs
 System.Web.UI.WebControls/ButtonColumnType.cs