2003-01-27 Gaurav Vaish <gvaish_mono AT lycos.com>
authorGaurav Vaish <gvaish@mono-cvs.ximian.com>
Mon, 27 Jan 2003 17:28:33 +0000 (17:28 -0000)
committerGaurav Vaish <gvaish@mono-cvs.ximian.com>
Mon, 27 Jan 2003 17:28:33 +0000 (17:28 -0000)
* List.cs, PagedControl.cs
                         : Was I drunk? or Sleeping when I wrote
                           the classes? I mixed up the methods.
                           Reorganizing.
* PagedControl.cs        : Completed.

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

mcs/class/System.Web.Mobile/System.Web.UI.MobileControls/ChangeLog
mcs/class/System.Web.Mobile/System.Web.UI.MobileControls/List.cs
mcs/class/System.Web.Mobile/System.Web.UI.MobileControls/PagedControl.cs

index aceb5a137686d791cf75adaaa732bf6f59c14aaf..435a53060d33971473a94cba079759914b85e7ec 100644 (file)
@@ -1,4 +1,12 @@
 
+2003-01-27     Gaurav Vaish <gvaish_mono AT lycos.com>
+
+       * List.cs, PagedControl.cs
+                                : Was I drunk? or Sleeping when I wrote
+                                  the classes? I mixed up the methods.
+                                  Reorganizing.
+       * PagedControl.cs        : Completed.
+
 2003-01-26     Gaurav Vaish <gvaish_mono AT lycos.com>
 
        * Form.cs                : HasActiveHandler()       - Stubbed.
index 1d7cdc82bbd6a21f899517e8e0598600ab3e25cd..051511cdf6674a0ff004727b81f350f490a1e116 100644 (file)
@@ -16,6 +16,9 @@ namespace System.Web.UI.MobileControls
        public class List : PagedControl//, INamingContainer, IListControl,
 //                         ITemplateable, IPostBackEventHandler
        {
+               private static readonly object ItemDataBindEvent = new object();
+               private static readonly object ItemCommandEvent  = new object();
+
                public List()
                {
                }
@@ -27,5 +30,35 @@ namespace System.Web.UI.MobileControls
                                throw new NotImplementedException();
                        }
                }
+
+               protected override bool OnBubbleEvent(object sender, EventArgs e)
+               {
+                       if(e is ListCommandEventArgs)
+                       {
+                               OnItemCommand((ListCommandEventArgs)e);
+                               return true;
+                       }
+                       return false;
+               }
+
+               protected override void OnDataBinding(EventArgs e)
+               {
+                       base.OnDataBinding(e);
+                       throw new NotImplementedException();
+               }
+
+               protected void OnItemDataBind(ListDataBindEventArgs e)
+               {
+                       ListDataBindEventHandler ldbeh = (ListDataBindEventHandler)(Events[ItemDataBindEvent]);
+                       if(ldbeh != null)
+                               ldbeh(this, e);
+               }
+
+               protected virtual void OnItemCommand(ListCommandEventArgs e)
+               {
+                       ListCommandEventHandler lceh = (ListCommandEventHandler)(Events[ItemCommandEvent]);
+                       if(lceh != null)
+                               lceh(this, e);
+               }
        }
 }
index 2dbdd8a51c0e1a7ebe417076d2feffe2328e4f56..c7d15759a189afe485c909dafe166e23ac74d3b4 100644 (file)
@@ -16,8 +16,6 @@ namespace System.Web.UI.MobileControls
        public abstract class PagedControl : MobileControl
        {
                private static readonly object LoadItemsEvent    = new object();
-               private static readonly object ItemDataBindEvent = new object();
-               private static readonly object ItemCommandEvent  = new object();
 
                private int itemCount = 0;
                private ItemPager itemPager;
@@ -39,11 +37,6 @@ namespace System.Web.UI.MobileControls
                        }
                }
 
-               private void OnLoadItems()
-               {
-                       OnLoadItems(new LoadItemsEventArgs(PagerItemIndex, PagerItemCount));
-               }
-
                private int PagerItemIndex
                {
                        get
@@ -63,6 +56,87 @@ namespace System.Web.UI.MobileControls
 
                protected abstract int InternalItemCount { get; }
 
+               public int FirstVisibleItemIndex
+               {
+                       get
+                       {
+                               if(!IsCustomPaging && EnablePagination)
+                                       return PagerItemIndex;
+                               return 0;
+                       }
+               }
+
+               private bool IsCustomPaging
+               {
+                       get
+                       {
+                               return (itemCount > 0);
+                       }
+               }
+
+               public int ItemCount
+               {
+                       get
+                       {
+                               return itemCount;
+                       }
+                       set
+                       {
+                               itemCount = value;
+                       }
+               }
+
+               public int ItemWeight
+               {
+                       get
+                       {
+                               return ControlPager.DefaultWeight;
+                       }
+               }
+
+               public int ItemsPerPage
+               {
+                       get
+                       {
+                               object o = ViewState["ItemsPerPage"];
+                               if(o != null)
+                                       return (int)o;
+                               return 0;
+                       }
+                       set
+                       {
+                               ViewState["ItemsPerPage"] = value;
+                       }
+               }
+
+               public int VisibleItemCount
+               {
+                       get
+                       {
+                               if(IsCustomPaging || !EnablePagination)
+                                       return InternalItemCount;
+                               return PagerItemCount;
+                       }
+               }
+
+               public override int VisibleWeight
+               {
+                       get
+                       {
+                               if(VisibleItemCount == -1)
+                                       return 0;
+                               return VisibleItemCount * GetItemWeight();
+                       }
+               }
+
+               private int GetItemWeight()
+               {
+                       int iw = Adapter.ItemWeight;
+                       if(iw == ControlPager.UseDefaultWeight)
+                               return ItemWeight;
+                       return iw;
+               }
+
                protected virtual void OnLoadItems(LoadItemsEventArgs e)
                {
                        LoadItemsEventHandler lieh = (LoadItemsEventHandler)(Events[LoadItemsEvent]);
@@ -70,34 +144,47 @@ namespace System.Web.UI.MobileControls
                                lieh(this, e);
                }
 
-               protected override bool OnBubbleEvent(object sender, EventArgs e)
+               private void OnLoadItems()
                {
-                       if(e is ListCommandEventArgs)
-                       {
-                               OnItemCommand((ListCommandEventArgs)e);
-                               return true;
-                       }
-                       return false;
+                       OnLoadItems(new LoadItemsEventArgs(PagerItemIndex, PagerItemCount));
+               }
+
+               protected virtual void OnPageChanged(int oldPageIndex, int newPageIndex)
+               {
+                       pagingCharsChanged = true;
                }
 
-               protected override void OnDataBinding(EventArgs e)
+               protected override void OnPreRender(EventArgs e)
                {
-                       base.OnDataBinding(e);
-                       throw new NotImplementedException();
+                       if(IsCustomPaging)
+                       {
+                               if(!Page.IsPostBack || Form.PaginationStateChanged
+                                  || pagingCharsChanged || !IsViewStateEnabled())
+                               {
+                                       OnLoadItems();
+                               }
+                       }
+                       base.OnPreRender(e);
                }
 
-               protected void OnItemDataBind(ListDataBindEventArgs e)
+               private bool IsViewStateEnabled()
                {
-                       ListDataBindEventHandler ldbeh = (ListDataBindEventHandler)(Events[ItemDataBindEvent]);
-                       if(ldbeh != null)
-                               ldbeh(this, e);
+                       Control ctrl = this;
+                       while(ctrl != null && ctrl.EnableViewState)
+                       {
+                               ctrl = ctrl.Parent;
+                       }
+                       return (ctrl == null);
                }
 
-               protected virtual void OnItemCommand(ListCommandEventArgs e)
+               public override void PaginateRecursive(ControlPager pager)
                {
-                       ListCommandEventHandler lceh = (ListCommandEventHandler)(Events[ItemCommandEvent]);
-                       if(lceh != null)
-                               lceh(this, e);
+                       int ic = 0;
+                       int ipp = 0;
+                       if(IsCustomPaging || InternalItemCount == 0)
+                               ic = ItemCount;
+                       ipp = ItemsPerPage;
+                       itemPager = pager.GetItemPager(this, ic, ipp, GetItemWeight());
                }
        }
 }