//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; /// /// Specifies the pager setting for the control. This class cannot be inherited. /// [TypeConverter(typeof(ExpandableObjectConverter))] public sealed class PagerSettings : IStateManager { private StateBag _viewState; private bool _isTracking; [ Browsable(false) ] public event EventHandler PropertyChanged; /// /// Creates a new instance of PagerSettings. /// public PagerSettings() { _viewState = new StateBag(); } /// /// Gets or sets the image path to be used for the First /// page button. /// [ WebCategory("Appearance"), DefaultValue(""), NotifyParentProperty(true), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.PagerSettings_FirstPageImageUrl) ] public string FirstPageImageUrl { get { object o = ViewState["FirstPageImageUrl"]; if (o != null) { return(string)o; } return String.Empty; } set { string oldValue = FirstPageImageUrl; if (oldValue != value) { ViewState["FirstPageImageUrl"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the text to be used for the First page /// button. /// [ WebCategory("Appearance"), DefaultValue("<<"), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_FirstPageText) ] public string FirstPageText { get { object o = ViewState["FirstPageText"]; if (o != null) { return(string)o; } return "<<"; } set { string oldValue = FirstPageText; if (oldValue != value) { ViewState["FirstPageText"] = value; OnPropertyChanged(); } } } /// /// internal bool IsPagerOnBottom { get { PagerPosition position = Position; return(position == PagerPosition.Bottom) || (position == PagerPosition.TopAndBottom); } } /// /// internal bool IsPagerOnTop { get { PagerPosition position = Position; return(position == PagerPosition.Top) || (position == PagerPosition.TopAndBottom); } } /// /// Gets or sets the image path to be used for the Last /// page button. /// [ WebCategory("Appearance"), DefaultValue(""), NotifyParentProperty(true), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.PagerSettings_LastPageImageUrl) ] public string LastPageImageUrl { get { object o = ViewState["LastPageImageUrl"]; if (o != null) { return(string)o; } return String.Empty; } set { string oldValue = LastPageImageUrl; if (oldValue != value) { ViewState["LastPageImageUrl"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the text to be used for the Last page /// button. /// [ WebCategory("Appearance"), DefaultValue(">>"), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_LastPageText) ] public string LastPageText { get { object o = ViewState["LastPageText"]; if (o != null) { return(string)o; } return ">>"; } set { string oldValue = LastPageText; if (oldValue != value) { ViewState["LastPageText"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the type of Paging UI to use. /// [ WebCategory("Appearance"), DefaultValue(PagerButtons.Numeric), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_Mode) ] public PagerButtons Mode { get { object o = ViewState["PagerMode"]; if (o != null) { return(PagerButtons)o; } return PagerButtons.Numeric; } set { if (value < PagerButtons.NextPrevious || value > PagerButtons.NumericFirstLast) { throw new ArgumentOutOfRangeException("value"); } PagerButtons oldValue = Mode; if (oldValue != value) { ViewState["PagerMode"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the image path to be used for the Next /// page button. /// [ WebCategory("Appearance"), DefaultValue(""), NotifyParentProperty(true), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.PagerSettings_NextPageImageUrl) ] public string NextPageImageUrl { get { object o = ViewState["NextPageImageUrl"]; if (o != null) { return(string)o; } return String.Empty; } set { string oldValue = NextPageImageUrl; if (oldValue != value) { ViewState["NextPageImageUrl"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the text to be used for the Next page /// button. /// [ WebCategory("Appearance"), DefaultValue(">"), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_NextPageText) ] public string NextPageText { get { object o = ViewState["NextPageText"]; if (o != null) { return(string)o; } return ">"; } set { string oldValue = NextPageText; if (oldValue != value) { ViewState["NextPageText"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the number of pages to show in the /// paging UI when the mode is /// . /// [ WebCategory("Behavior"), DefaultValue(10), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_PageButtonCount) ] public int PageButtonCount { get { object o = ViewState["PageButtonCount"]; if (o != null) { return(int)o; } return 10; } set { if (value < 1) { throw new ArgumentOutOfRangeException("value"); } int oldValue = PageButtonCount; if (oldValue != value) { ViewState["PageButtonCount"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the vertical /// position of the paging UI bar with /// respect to its associated control. /// [ WebCategory("Layout"), DefaultValue(PagerPosition.Bottom), NotifyParentProperty(true), WebSysDescription(SR.PagerStyle_Position) ] public PagerPosition Position { get { object o = ViewState["Position"]; if (o != null) { return(PagerPosition)o; } return PagerPosition.Bottom; } set { if (value < PagerPosition.Bottom || value > PagerPosition.TopAndBottom) { throw new ArgumentOutOfRangeException("value"); } ViewState["Position"] = value; } } /// /// Gets or sets the image path to be used for the Previous /// page button. /// [ WebCategory("Appearance"), DefaultValue(""), NotifyParentProperty(true), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.PagerSettings_PreviousPageImageUrl) ] public string PreviousPageImageUrl { get { object o = ViewState["PreviousPageImageUrl"]; if (o != null) { return(string)o; } return String.Empty; } set { string oldValue = PreviousPageImageUrl; if (oldValue != value) { ViewState["PreviousPageImageUrl"] = value; OnPropertyChanged(); } } } /// /// Gets or sets the text to be used for the Previous /// page button. /// [ WebCategory("Appearance"), DefaultValue("<"), NotifyParentProperty(true), WebSysDescription(SR.PagerSettings_PreviousPageText) ] public string PreviousPageText { get { object o = ViewState["PreviousPageText"]; if (o != null) { return(string)o; } return "<"; } set { string oldValue = PreviousPageText; if (oldValue != value) { ViewState["PreviousPageText"] = value; OnPropertyChanged(); } } } /// /// Gets or set whether the paging /// UI is to be shown. /// [ WebCategory("Appearance"), DefaultValue(true), NotifyParentProperty(true), WebSysDescription(SR.PagerStyle_Visible) ] public bool Visible { get { object o = ViewState["PagerVisible"]; if (o != null) { return(bool)o; } return true; } set { ViewState["PagerVisible"] = value; } } /// /// Gets the statebag for the PagerSettings. This property is read-only. /// private StateBag ViewState { get { return _viewState; } } /// /// DataBound Controls use this event to rebind when settings have changed. /// void OnPropertyChanged() { if (PropertyChanged != null) { PropertyChanged(this, EventArgs.Empty); } } /// /// The propertyGrid uses ToString() to determine what text should be in the PagerSetting's edit box. /// public override string ToString() { return String.Empty; } #region IStateManager implementation /// bool IStateManager.IsTrackingViewState { get { return _isTracking; } } /// void IStateManager.LoadViewState(object state) { if (state != null) { ((IStateManager)ViewState).LoadViewState(state); } } /// object IStateManager.SaveViewState() { object state = ((IStateManager)ViewState).SaveViewState(); return state; } /// void IStateManager.TrackViewState() { _isTracking = true; ViewState.TrackViewState(); } #endregion } }