326 lines
8.6 KiB
C#
326 lines
8.6 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Drawing;
|
|
using System.ComponentModel;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.DotNetBar.Controls
|
|
{
|
|
/// <summary>
|
|
/// Represents the PageNavigator control
|
|
/// </summary>
|
|
[ToolboxBitmap(typeof(PageNavigator), "PageNavigator.PageNavigator.ico"), ToolboxItem(true)]
|
|
[DefaultEvent("ValueChanged"), ComVisible(false)] //, Designer(typeof(Design.PageNavigatorDesigner))]
|
|
public class PageNavigator : BaseItemControl
|
|
{
|
|
#region Private Variables
|
|
|
|
private PageNavigatorItem _PageNavItem; // Navigation item
|
|
|
|
#endregion
|
|
|
|
#region Events
|
|
|
|
/// <summary>
|
|
/// Occurs when NavigateNextPage button is clicked
|
|
/// </summary>
|
|
[Description("Occurs when NavigateNextPage button is clicked.")]
|
|
public event EventHandler NavigateNextPage;
|
|
|
|
/// <summary>
|
|
/// Occurs when NavigateToday button is clicked
|
|
/// </summary>
|
|
[Description("Occurs when NavigateToday button is clicked.")]
|
|
public event EventHandler NavigateToday;
|
|
|
|
/// <summary>
|
|
/// Occurs when NavigatePreviousPage button is clicked
|
|
/// </summary>
|
|
[Description("Occurs when NavigatePreviousPage button is clicked.")]
|
|
public event EventHandler NavigatePreviousPage;
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Constructor
|
|
/// </summary>
|
|
public PageNavigator()
|
|
{
|
|
_PageNavItem = new PageNavigatorItem();
|
|
_PageNavItem.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
this.Size = _PageNavItem.Size;
|
|
this.HostItem = _PageNavItem;
|
|
|
|
HookEvents(true);
|
|
}
|
|
|
|
#region DefaultSize
|
|
|
|
/// <summary>
|
|
/// DefaultSize
|
|
/// </summary>
|
|
protected override Size DefaultSize
|
|
{
|
|
get
|
|
{
|
|
// Set a default size based upon
|
|
// the current object layout orientation
|
|
|
|
int m = SystemInformation.VerticalScrollBarWidth;
|
|
int n = m * 3;
|
|
|
|
if (_PageNavItem != null &&
|
|
_PageNavItem.Orientation == eOrientation.Horizontal)
|
|
{
|
|
return (new Size(n, m));
|
|
}
|
|
|
|
return (new Size(m, n));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Public properties
|
|
|
|
#region Orientation
|
|
|
|
/// <summary>
|
|
/// Gets or sets the layout orientation. Default value is horizontal.
|
|
/// </summary>
|
|
[DefaultValue(eOrientation.Horizontal), Category("Appearance")]
|
|
[Description("Indicates control layout orientation.")]
|
|
public eOrientation Orientation
|
|
{
|
|
get { return (_PageNavItem.Orientation); }
|
|
|
|
set
|
|
{
|
|
if (_PageNavItem.Orientation != value)
|
|
{
|
|
_PageNavItem.Orientation = value;
|
|
|
|
this.RecalcLayout();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region PreviousPageTooltip
|
|
|
|
/// <summary>
|
|
/// Gets or sets the tooltip for the PreviousPage button of the control
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance")]
|
|
[Description("Indicates tooltip for the PreviousPage button of the control.")]
|
|
public string PreviousPageTooltip
|
|
{
|
|
get { return (_PageNavItem.PreviousPageTooltip); }
|
|
set { _PageNavItem.PreviousPageTooltip = value; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region TodayTooltip
|
|
|
|
/// <summary>
|
|
/// Gets or sets the tooltip for the Today button
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance")]
|
|
[Description("Indicates tooltip for the TodayPage button of the control.")]
|
|
public string TodayTooltip
|
|
{
|
|
get { return (_PageNavItem.TodayTooltip); }
|
|
set { _PageNavItem.TodayTooltip = value; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NextPageTooltip
|
|
|
|
/// <summary>
|
|
/// Gets or sets the tooltip for the NextPage button
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance")]
|
|
[Description("Indicates tooltip for the NextPage button of the control.")]
|
|
public string NextPageTooltip
|
|
{
|
|
get { return (_PageNavItem.NextPageTooltip); }
|
|
set { _PageNavItem.NextPageTooltip = value; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Style
|
|
/// <summary>
|
|
/// Gets/Sets the visual style for the control.
|
|
/// </summary>
|
|
[Browsable(false), DefaultValue(eDotNetBarStyle.StyleManagerControlled)]
|
|
public override eDotNetBarStyle Style
|
|
{
|
|
get
|
|
{
|
|
return base.Style;
|
|
}
|
|
set
|
|
{
|
|
base.Style = value;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region HookEvents
|
|
|
|
/// <summary>
|
|
/// Hooks or unhooks our control events
|
|
/// </summary>
|
|
/// <param name="hook">true to hook, false to unhook</param>
|
|
private void HookEvents(bool hook)
|
|
{
|
|
if (hook == true)
|
|
{
|
|
_PageNavItem.NavigatePreviousPage += PageNavNavigatePreviousPage;
|
|
_PageNavItem.NavigateNextPage += PageNavNavigateNextPage;
|
|
_PageNavItem.NavigateToday += PageNavNavigateToday;
|
|
}
|
|
else
|
|
{
|
|
_PageNavItem.NavigatePreviousPage -= PageNavNavigatePreviousPage;
|
|
_PageNavItem.NavigateNextPage -= PageNavNavigateNextPage;
|
|
_PageNavItem.NavigateToday -= PageNavNavigateToday;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Event handling
|
|
|
|
#region PageNav_NavigatePreviousPage
|
|
|
|
/// <summary>
|
|
/// Handles NavigatePreviousPage events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
void PageNavNavigatePreviousPage(object sender, EventArgs e)
|
|
{
|
|
OnNavigatePreviousPage();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the NavigatePreviousPage event
|
|
/// </summary>
|
|
private void OnNavigatePreviousPage()
|
|
{
|
|
if (NavigatePreviousPage != null)
|
|
NavigatePreviousPage(this, EventArgs.Empty);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region PageNav_NavigateToday
|
|
|
|
/// <summary>
|
|
/// Handles NavigateToday events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
void PageNavNavigateToday(object sender, EventArgs e)
|
|
{
|
|
OnNavigateToday();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the NavigateToday event
|
|
/// </summary>
|
|
private void OnNavigateToday()
|
|
{
|
|
if (NavigateToday != null)
|
|
NavigateToday(this, EventArgs.Empty);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region PageNav_NavigateNextPage
|
|
|
|
/// <summary>
|
|
/// Handles NavigateNextPage events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
void PageNavNavigateNextPage(object sender, EventArgs e)
|
|
{
|
|
OnNavigateNextPage();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the NavigateNextPage event
|
|
/// </summary>
|
|
private void OnNavigateNextPage()
|
|
{
|
|
if (NavigateNextPage != null)
|
|
NavigateNextPage(this, EventArgs.Empty);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region RecalcLayout
|
|
|
|
/// <summary>
|
|
/// Forces the button to perform internal layout.
|
|
/// </summary>
|
|
public override void RecalcLayout()
|
|
{
|
|
base.RecalcLayout();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Dispose
|
|
|
|
/// <summary>
|
|
/// Dispose
|
|
/// </summary>
|
|
/// <param name="disposing"></param>
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing == true)
|
|
HookEvents(false);
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#region enums
|
|
|
|
/// <summary>
|
|
/// PageNavigator buttons
|
|
/// </summary>
|
|
public enum PageNavigatorButton
|
|
{
|
|
/// <summary>
|
|
/// Previous page
|
|
/// </summary>
|
|
PreviousPage,
|
|
|
|
/// <summary>
|
|
/// Today
|
|
/// </summary>
|
|
Today,
|
|
|
|
/// <summary>
|
|
/// Next page
|
|
/// </summary>
|
|
NextPage
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
#endif |