From: Argiris K. <be...@us...> - 2006-01-03 01:49:32
|
Update of /cvsroot/magicajax/magicajax/Core/UI/Controls In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9346/Core/UI/Controls Modified Files: AjaxPanel.cs AjaxZone.cs Log Message: -Client event handling controls -Various minor changes Index: AjaxPanel.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/UI/Controls/AjaxPanel.cs,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** AjaxPanel.cs 22 Dec 2005 23:06:51 -0000 1.45 --- AjaxPanel.cs 3 Jan 2006 01:49:09 -0000 1.46 *************** *** 53,56 **** --- 53,60 ---- } + /// <summary> + /// Defines what form elements should be excluded from the post data. + /// </summary> + [Flags] public enum ExcludeFromPostFlag { *************** *** 74,78 **** /// Do not post any hidden field /// </summary> ! AllHidden = 7, /// <summary> /// Do not post any (non-hidden) form element --- 78,82 ---- /// Do not post any hidden field /// </summary> ! AllHidden = ViewState | Fingerprints | UserHidden, /// <summary> /// Do not post any (non-hidden) form element *************** *** 82,88 **** /// Do not post any element /// </summary> ! AllElements = 15 } /// <summary> /// Works like Panel but the controls it contains are rendered on the page by sending --- 86,111 ---- /// Do not post any element /// </summary> ! AllElements = AllHidden | FormElements } + #region AjaxPanelUpdated event Handler & Args + public class AjaxPanelUpdatedEventArgs + { + private Control _updatedControl; + + public Control UpdatedControl + { + get { return _updatedControl; } + } + + public AjaxPanelUpdatedEventArgs (Control updatedControl) + { + this._updatedControl = updatedControl; + } + } + + public delegate void AjaxPanelUpdatedEventHandler (object sender, AjaxPanelUpdatedEventArgs e); + #endregion + /// <summary> /// Works like Panel but the controls it contains are rendered on the page by sending *************** *** 107,113 **** /// </remarks> [Designer("MagicAjax.UI.Design.AjaxPanelDesigner, MagicAjax"), ! ParseChildrenAttribute(false), ! PersistChildren(true), ! ToolboxData("<{0}:AjaxPanel runat=server>AjaxPanel</{0}:AjaxPanel>")] public class AjaxPanel : RenderedByScriptControl { --- 130,136 ---- /// </remarks> [Designer("MagicAjax.UI.Design.AjaxPanelDesigner, MagicAjax"), ! ParseChildrenAttribute(false), ! PersistChildren(true), ! ToolboxData("<{0}:AjaxPanel runat=server>AjaxPanel</{0}:AjaxPanel>")] public class AjaxPanel : RenderedByScriptControl { *************** *** 120,123 **** --- 143,147 ---- private Hashtable _controlHtmlFingerprints = new Hashtable(); private ControlCollectionState _controlState; + private Hashtable _controlUpdatedHandlerLists = new Hashtable(); #endregion *************** *** 171,174 **** --- 195,204 ---- #endregion + #region Events + + public event AjaxPanelUpdatedEventHandler ContentUpdated; + + #endregion + #region Public Methods *************** *** 206,209 **** --- 236,264 ---- #endregion + public virtual void AddControlUpdatedEventHandler (Control controlToMonitor, EventHandler controlUpdatedHandler) + { + ArrayList handlerList = _controlUpdatedHandlerLists[controlToMonitor] as ArrayList; + if (handlerList == null) + { + handlerList = new ArrayList(); + _controlUpdatedHandlerLists.Add (controlToMonitor, handlerList); + } + + if (!handlerList.Contains(controlUpdatedHandler)) + handlerList.Add (controlUpdatedHandler); + } + + public virtual void RemoveControlUpdatedEventHandler (Control controlToMonitor, EventHandler controlUpdatedHandler) + { + ArrayList handlerList = _controlUpdatedHandlerLists[controlToMonitor] as ArrayList; + if (handlerList == null) + { + handlerList = new ArrayList(); + _controlUpdatedHandlerLists.Add (controlToMonitor, handlerList); + } + + handlerList.Add (controlUpdatedHandler); + } + #endregion *************** *** 358,387 **** #endregion ! protected override void SetAjaxAttributes() { switch (_ajaxCallConnection) { - case AjaxCallConnectionType.None: - this.Attributes.Remove ("AjaxCall"); - break; - case AjaxCallConnectionType.Asynchronous: ! this.Attributes["AjaxCall"] = "async"; break; case AjaxCallConnectionType.Synchronous: ! this.Attributes["AjaxCall"] = "sync"; break; } ! if (_excludeFlags == ExcludeFromPostFlag.None) ! { ! this.Attributes.Remove ("ExcludeFlags"); ! } ! else { ! this.Attributes["ExcludeFlags"] = ((int)_excludeFlags).ToString(); } } protected virtual void SaveControlState() --- 413,438 ---- #endregion ! #region override AddAjaxAttributesToRender ! protected override void AddAjaxAttributesToRender(HtmlTextWriter writer) { + base.AddAjaxAttributesToRender (writer); + switch (_ajaxCallConnection) { case AjaxCallConnectionType.Asynchronous: ! writer.AddAttribute("AjaxCall", "async"); break; case AjaxCallConnectionType.Synchronous: ! writer.AddAttribute("AjaxCall", "sync"); break; } ! if (_excludeFlags != ExcludeFromPostFlag.None) { ! writer.AddAttribute("ExcludeFlags", ((int)_excludeFlags).ToString()); } } + #endregion protected virtual void SaveControlState() *************** *** 623,627 **** protected virtual bool IsHtmlHolder (Control control) { ! return ( control is WebControl && !(control is RenderedByScriptControl) ); } --- 674,678 ---- protected virtual bool IsHtmlHolder (Control control) { ! return ( control is WebControl && !(control is INonHtmlHolder) ); } *************** *** 840,843 **** --- 891,902 ---- #endregion + #region OnContentUpdated + protected virtual void OnContentUpdated (AjaxPanelUpdatedEventArgs e) + { + if (ContentUpdated != null) + ContentUpdated(this, e); + } + #endregion + #endregion Index: AjaxZone.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/UI/Controls/AjaxZone.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AjaxZone.cs 22 Dec 2005 01:26:25 -0000 1.3 --- AjaxZone.cs 3 Jan 2006 01:49:09 -0000 1.4 *************** *** 6,17 **** { /// <summary> ! /// Summary description for AjaxZone. /// </summary> public class AjaxZone : AjaxPanel { ! protected override void OnLoad(EventArgs e) { ! base.OnLoad (e); ! this.Attributes["AjaxLocalScope"] = "true"; } } --- 6,26 ---- { /// <summary> ! /// An AjaxPanel that is isolated from the rest AjaxPanels of the page. /// </summary> + /// <remarks> + /// It's an AjaxPanel that has the MagicAjax attribute "AjaxLocalScope" set to true. + /// It is provided for convenience and readability. Please read the documentation + /// about "AjaxLocalScope" to find out what is the effect of this attribute. + /// </remarks> + [Designer("MagicAjax.UI.Design.AjaxPanelDesigner, MagicAjax"), + ParseChildrenAttribute(false), + PersistChildren(true), + ToolboxData("<{0}:AjaxZone runat=server>AjaxZone</{0}:AjaxZone>")] public class AjaxZone : AjaxPanel { ! protected override void AddAjaxAttributesToRender(HtmlTextWriter writer) { ! base.AddAjaxAttributesToRender (writer); ! writer.AddAttribute ("AjaxLocalScope", "true"); } } |