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 {
00013 [ToolboxBitmap(typeof(ASP.Repeater))]
00014 public class Repeater : ASP.Repeater, IUpdatableControl, ICallBackContainerControl
00015 {
00016 #region Unique Anthem control code
00017
00022 protected override void OnItemCommand(System.Web.UI.WebControls.RepeaterCommandEventArgs e)
00023 {
00024 base.OnItemCommand(e);
00025 this.UpdateAfterCallBack = true;
00026 }
00027
00028 private const string parentTagName = "div";
00033 protected override void Render(HtmlTextWriter writer)
00034 {
00035 #if !V2
00036 bool DesignMode = this.Context == null;
00037 #endif
00038 if (EnableCallBack && AddCallBacks)
00039 Anthem.Manager.AddCallBacks(this,
00040 EnabledDuringCallBack,
00041 TextDuringCallBack,
00042 PreCallBackFunction,
00043 PostCallBackFunction,
00044 CallBackCancelledFunction);
00045
00046 if (!DesignMode)
00047 {
00048 Anthem.Manager.WriteBeginControlMarker(writer, parentTagName, this);
00049 }
00050 if (Visible)
00051 {
00052 base.Render(writer);
00053 }
00054 if (!DesignMode)
00055 {
00056 Anthem.Manager.WriteEndControlMarker(writer, parentTagName, this);
00057 }
00058 }
00059
00060 #endregion
00061
00062 #region ICallBackControl implementation
00063
00068 [Category("Anthem")]
00069 [DefaultValue("")]
00070 [Description("The javascript function to call on the client if the callback is cancelled.")]
00071 public virtual string CallBackCancelledFunction
00072 {
00073 get
00074 {
00075 string text = (string)ViewState["CallBackCancelledFunction"];
00076 if (text == null)
00077 return string.Empty;
00078 else
00079 return text;
00080 }
00081 set
00082 {
00083 ViewState["CallBackCancelledFunction"] = value;
00084 }
00085 }
00086
00094 [Category("Anthem")]
00095 [DefaultValue(true)]
00096 [Description("True if this control uses callbacks instead of postbacks to post data to the server.")]
00097 public virtual bool EnableCallBack
00098 {
00099 get
00100 {
00101 object obj = this.ViewState["EnableCallBack"];
00102 if (obj == null)
00103 return true;
00104 else
00105 return (bool)obj;
00106 }
00107 set
00108 {
00109 ViewState["EnableCallBack"] = value;
00110 }
00111 }
00112
00121 [Category("Anthem")]
00122 [DefaultValue(true)]
00123 [Description("True if this control is enabled on the client during callbacks.")]
00124 public virtual bool EnabledDuringCallBack
00125 {
00126 get
00127 {
00128 object obj = this.ViewState["EnabledDuringCallBack"];
00129 if (obj == null)
00130 return true;
00131 else
00132 return (bool)obj;
00133 }
00134 set
00135 {
00136 ViewState["EnabledDuringCallBack"] = value;
00137 }
00138 }
00139
00140
00158 [Category("Anthem")]
00159 [DefaultValue("")]
00160 [Description("The javascript function to call on the client after the callback response is received.")]
00161 public virtual string PostCallBackFunction
00162 {
00163 get
00164 {
00165 string text = (string)this.ViewState["PostCallBackFunction"];
00166 if (text == null)
00167 {
00168 return string.Empty;
00169 }
00170 return text;
00171 }
00172 set
00173 {
00174 ViewState["PostCallBackFunction"] = value;
00175 }
00176 }
00177
00183 [Category("Anthem")]
00184 [DefaultValue("")]
00185 [Description("The javascript function to call on the client before the callback is made.")]
00186 public virtual string PreCallBackFunction
00187 {
00188 get
00189 {
00190 string text = (string)this.ViewState["PreCallBackFunction"];
00191 if (text == null)
00192 {
00193 return string.Empty;
00194 }
00195 return text;
00196 }
00197 set
00198 {
00199 ViewState["PreCallBackFunction"] = value;
00200 }
00201 }
00202
00211 [Category("Anthem")]
00212 [DefaultValue("")]
00213 [Description("The text to display during the callback.")]
00214 public virtual string TextDuringCallBack
00215 {
00216 get
00217 {
00218 string text = (string)this.ViewState["TextDuringCallBack"];
00219 if (text == null)
00220 {
00221 return string.Empty;
00222 }
00223 return text;
00224 }
00225 set
00226 {
00227 ViewState["TextDuringCallBack"] = value;
00228 }
00229 }
00230
00231 #endregion
00232
00233 #region ICallBackContainerControl implementation
00234
00246 [Category("Anthem")]
00247 [DefaultValue(true)]
00248 [Description("True if this control should convert child control postbacks into callbacks.")]
00249 public virtual bool AddCallBacks
00250 {
00251 get
00252 {
00253 object obj = this.ViewState["AddCallBacks"];
00254 if (obj == null)
00255 return true;
00256 else
00257 return (bool)obj;
00258 }
00259 set
00260 {
00261 ViewState["AddCallBacks"] = value;
00262 }
00263 }
00264
00265 #endregion
00266
00267 #region IUpdatableControl implementation
00268
00282 [Category("Anthem")]
00283 [DefaultValue(false)]
00284 [Description("True if this control should be updated after each callback.")]
00285 public virtual bool AutoUpdateAfterCallBack
00286 {
00287 get
00288 {
00289 object obj = this.ViewState["AutoUpdateAfterCallBack"];
00290 if (obj == null)
00291 return false;
00292 else
00293 return (bool)obj;
00294 }
00295 set
00296 {
00297 if (value) UpdateAfterCallBack = true;
00298 ViewState["AutoUpdateAfterCallBack"] = value;
00299 }
00300 }
00301
00302 private bool _updateAfterCallBack = false;
00303
00318 [Browsable(false)]
00319 [DefaultValue(false)]
00320 public virtual bool UpdateAfterCallBack
00321 {
00322 get { return _updateAfterCallBack; }
00323 set { _updateAfterCallBack = value; }
00324 }
00325
00326 #endregion
00327
00328 #region Common Anthem control code
00329
00335 protected override void OnLoad(EventArgs e)
00336 {
00337 base.OnLoad(e);
00338 Anthem.Manager.Register(this);
00339 }
00340
00341 #if V2
00345 public override void RenderControl(HtmlTextWriter writer)
00346 {
00347 base.Visible = true;
00348 base.RenderControl(writer);
00349 }
00350 #endif
00351
00359 public override bool Visible
00360 {
00361 get
00362 {
00363 #if !V2
00364 bool DesignMode = this.Context == null;
00365 #endif
00366 return Anthem.Manager.GetControlVisible(this, ViewState, DesignMode);
00367 }
00368 set { Anthem.Manager.SetControlVisible(ViewState, value); }
00369 }
00370
00371 #endregion
00372 }
00373 }