00001 using System;
00002 using System.ComponentModel;
00003 using System.Drawing;
00004 using System.Web.UI;
00005 using ASP = System.Web.UI.WebControls;
00006
00007 namespace Anthem
00008 {
00012 [ToolboxBitmap(typeof(ASP.BulletedList))]
00013 public class BulletedList : ASP.BulletedList, IUpdatableControl, ICallBackControl
00014 {
00015 #region Unique Anthem control code
00016
00022 [Category("Default")]
00023 [DefaultValue("")]
00024 [MergableProperty(false)]
00025 [PersistenceMode(PersistenceMode.InnerProperty)]
00026 public override System.Web.UI.WebControls.ListItemCollection Items
00027 {
00028 get
00029 {
00030 return base.Items;
00031 }
00032 }
00033
00038 protected override void AddAttributesToRender(HtmlTextWriter writer)
00039 {
00040 base.AddAttributesToRender(writer);
00041 if (this.DisplayMode == ASP.BulletedListDisplayMode.LinkButton)
00042 {
00043 for (int index = 0; index < this.Items.Count; index++)
00044 {
00045 ASP.ListItem item = this.Items[index];
00046 Anthem.Manager.AddScriptAttribute(
00047 this,
00048 item,
00049 "onclick",
00050 Anthem.Manager.GetCallbackEventReference(
00051 this,
00052 index.ToString(),
00053 this.CausesValidation,
00054 this.ValidationGroup
00055 ) + "return false;"
00056 );
00057 }
00058 }
00059 }
00060
00061 private const string parentTagName = "div";
00066 protected override void Render(HtmlTextWriter writer)
00067 {
00068 if (!DesignMode)
00069 {
00070 Anthem.Manager.WriteBeginControlMarker(writer, parentTagName, this);
00071 }
00072 if (Visible)
00073 {
00074 base.Render(writer);
00075 }
00076 if (!DesignMode)
00077 {
00078 Anthem.Manager.WriteEndControlMarker(writer, parentTagName, this);
00079 }
00080 }
00081
00082 #endregion
00083
00084 #region ICallBackControl implementation
00085
00090 [Category("Anthem")]
00091 [DefaultValue("")]
00092 [Description("The javascript function to call on the client if the callback is cancelled.")]
00093 public virtual string CallBackCancelledFunction
00094 {
00095 get
00096 {
00097 string text = (string)ViewState["CallBackCancelledFunction"];
00098 if (text == null)
00099 return string.Empty;
00100 else
00101 return text;
00102 }
00103 set
00104 {
00105 ViewState["CallBackCancelledFunction"] = value;
00106 }
00107 }
00108
00116 [Category("Anthem")]
00117 [DefaultValue(true)]
00118 [Description("True if this control uses callbacks instead of postbacks to post data to the server.")]
00119 public virtual bool EnableCallBack
00120 {
00121 get
00122 {
00123 object obj = this.ViewState["EnableCallBack"];
00124 if (obj == null)
00125 return true;
00126 else
00127 return (bool)obj;
00128 }
00129 set
00130 {
00131 ViewState["EnableCallBack"] = value;
00132 }
00133 }
00134
00143 [Category("Anthem")]
00144 [DefaultValue(true)]
00145 [Description("True if this control is enabled on the client during callbacks.")]
00146 public virtual bool EnabledDuringCallBack
00147 {
00148 get
00149 {
00150 object obj = this.ViewState["EnabledDuringCallBack"];
00151 if (obj == null)
00152 return true;
00153 else
00154 return (bool)obj;
00155 }
00156 set
00157 {
00158 ViewState["EnabledDuringCallBack"] = value;
00159 }
00160 }
00161
00162
00180 [Category("Anthem")]
00181 [DefaultValue("")]
00182 [Description("The javascript function to call on the client after the callback response is received.")]
00183 public virtual string PostCallBackFunction
00184 {
00185 get
00186 {
00187 string text = (string)this.ViewState["PostCallBackFunction"];
00188 if (text == null)
00189 {
00190 return string.Empty;
00191 }
00192 return text;
00193 }
00194 set
00195 {
00196 ViewState["PostCallBackFunction"] = value;
00197 }
00198 }
00199
00205 [Category("Anthem")]
00206 [DefaultValue("")]
00207 [Description("The javascript function to call on the client before the callback is made.")]
00208 public virtual string PreCallBackFunction
00209 {
00210 get
00211 {
00212 string text = (string)this.ViewState["PreCallBackFunction"];
00213 if (text == null)
00214 {
00215 return string.Empty;
00216 }
00217 return text;
00218 }
00219 set
00220 {
00221 ViewState["PreCallBackFunction"] = value;
00222 }
00223 }
00224
00233 [Category("Anthem")]
00234 [DefaultValue("")]
00235 [Description("The text to display during the callback.")]
00236 public virtual string TextDuringCallBack
00237 {
00238 get
00239 {
00240 string text = (string)this.ViewState["TextDuringCallBack"];
00241 if (text == null)
00242 {
00243 return string.Empty;
00244 }
00245 return text;
00246 }
00247 set
00248 {
00249 ViewState["TextDuringCallBack"] = value;
00250 }
00251 }
00252
00253 #endregion
00254
00255 #region IUpdatableControl implementation
00256
00270 [Category("Anthem")]
00271 [DefaultValue(false)]
00272 [Description("True if this control should be updated after each callback.")]
00273 public virtual bool AutoUpdateAfterCallBack
00274 {
00275 get
00276 {
00277 object obj = this.ViewState["AutoUpdateAfterCallBack"];
00278 if (obj == null)
00279 return false;
00280 else
00281 return (bool)obj;
00282 }
00283 set
00284 {
00285 if (value) UpdateAfterCallBack = true;
00286 ViewState["AutoUpdateAfterCallBack"] = value;
00287 }
00288 }
00289
00290 private bool _updateAfterCallBack = false;
00291
00306 [Browsable(false)]
00307 [DefaultValue(false)]
00308 public virtual bool UpdateAfterCallBack
00309 {
00310 get { return _updateAfterCallBack; }
00311 set { _updateAfterCallBack = value; }
00312 }
00313
00314 #endregion
00315
00316 #region Common Anthem control code
00317
00323 protected override void OnLoad(EventArgs e)
00324 {
00325 base.OnLoad(e);
00326 Anthem.Manager.Register(this);
00327 }
00328
00329 #if V2
00333 public override void RenderControl(HtmlTextWriter writer)
00334 {
00335 base.Visible = true;
00336 base.RenderControl(writer);
00337 }
00338 #endif
00339
00347 public override bool Visible
00348 {
00349 get
00350 {
00351 #if !V2
00352 bool DesignMode = this.Context == null;
00353 #endif
00354 return Anthem.Manager.GetControlVisible(this, ViewState, DesignMode);
00355 }
00356 set { Anthem.Manager.SetControlVisible(ViewState, value); }
00357 }
00358
00359 #endregion
00360 }
00361 }