1116 lines
31 KiB
C#

#if FRAMEWORK20
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using DevComponents.DotNetBar.Rendering;
using System.Drawing.Drawing2D;
namespace DevComponents.DotNetBar.Controls
{
/// <summary>
/// Represents the PageNavigate item
/// </summary>
[Browsable(false), Designer("DevComponents.DotNetBar.Design.SimpleItemDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
public class PageNavigatorItem : BaseItem
{
#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
#region Private Variables
private ePageNavigatorPart _MouseOverPart = ePageNavigatorPart.None;
private ePageNavigatorPart _MouseDownPart = ePageNavigatorPart.None;
private Rectangle _PreviousPageBounds;
private Rectangle _TodayBounds;
private Rectangle _NextPageBounds;
private string _PreviousPageTooltip = "";
private string _TodayTooltip = "";
private string _NextPageTooltip = "";
private Bitmap _PreviousPageBitmap;
private Bitmap _TodayBitmap;
private Bitmap _NextPageBitmap;
private Timer _ClickTimer;
private int _AutoClickCount;
private int _ButtonSize = SystemInformation.VerticalScrollBarWidth;
private int _MinWidth = SystemInformation.VerticalScrollBarWidth * 3;
#endregion
/// <summary>
/// Creates new instance of PageNavigateItem
/// </summary>
public PageNavigatorItem() : this("") { }
/// <summary>
/// Creates new instance of PageNavigateItem and assigns the name to it
/// </summary>
/// <param name="itemName">Item name</param>
public PageNavigatorItem(string itemName)
{
this.Name = itemName;
this.ClickRepeatInterval = 200;
this.MouseUpNotification = true;
this.MouseDownCapture = true;
this.Size = new Size(Dpi.Width(_MinWidth), Dpi.Height(_ButtonSize));
}
#region Internal properties
#region MouseOverPart
/// <summary>
/// Gets or sets the MouseOverPart
/// </summary>
internal ePageNavigatorPart MouseOverPart
{
get { return _MouseOverPart; }
set
{
if (_MouseOverPart != value)
{
_MouseOverPart = value;
UpdateTooltip();
this.Refresh();
}
}
}
#endregion
#region MouseDownPart
/// <summary>
/// Gets or sets the MouseDownPart
/// </summary>
internal ePageNavigatorPart MouseDownPart
{
get { return _MouseDownPart; }
set
{
if (_MouseDownPart != value)
{
_MouseDownPart = value;
this.Refresh();
}
}
}
#endregion
#endregion
#region Public properties
#region Orientation
/// <summary>
/// Gets or sets the control orientation. Default value is Horizontal
/// </summary>
[DefaultValue(eOrientation.Horizontal), Category("Appearance")]
[Description("Indicates PageNavigator orientation.")]
public override eOrientation Orientation
{
get { return (base.Orientation); }
set
{
if (base.Orientation != value)
{
base.Orientation = value;
// Release our current cached bitmaps
ReleaseBitmap(ref _NextPageBitmap);
ReleaseBitmap(ref _PreviousPageBitmap);
// Reset our size back to the
// default for the new orientation
this.Size = (value == eOrientation.Horizontal) ?
new Size(Dpi.Width(_MinWidth), Dpi.Height(_ButtonSize)) : new Size(Dpi.Width(_ButtonSize), Dpi.Height(_MinWidth));
NeedRecalcSize = true;
this.Refresh();
}
}
}
protected override void ScaleItem(SizeF factor)
{
ReleaseBitmap(ref _PreviousPageBitmap);
ReleaseBitmap(ref _TodayBitmap);
ReleaseBitmap(ref _NextPageBitmap);
this.Size = (Orientation == eOrientation.Horizontal) ?
new Size(Dpi.Width(_MinWidth), Dpi.Height(_ButtonSize)) : new Size(Dpi.Width(_ButtonSize), Dpi.Height(_MinWidth));
base.ScaleItem(factor);
}
#endregion
#region ClickAutoRepeat
/// <summary>
/// Gets or sets whether Click event will be auto repeated
/// when mouse button is kept pressed over the item
/// </summary>
[Browsable(false), DevCoBrowsable(false), DefaultValue(false), Category("Behavior")]
[Description("Gets or sets whether Click event will be auto repeated when the mouse button is kept pressed over the item.")]
public override bool ClickAutoRepeat
{
get { return (base.ClickAutoRepeat); }
set { base.ClickAutoRepeat = value; }
}
#endregion
#region ClickRepeatInterval
/// <summary>
/// Gets or sets the auto-repeat interval for the click event
/// when mouse button is kept pressed over the item
/// </summary>
[Browsable(true), DevCoBrowsable(true), DefaultValue(200), Category("Behavior")]
[Description("Gets or sets the auto-repeat interval for the click event when the mouse button is kept pressed over the item.")]
public override int ClickRepeatInterval
{
get { return (base.ClickRepeatInterval); }
set { base.ClickRepeatInterval = value; }
}
#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 _PreviousPageTooltip; }
set
{
_PreviousPageTooltip = value;
UpdateTooltip();
}
}
#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 (_TodayTooltip); }
set
{
_TodayTooltip = value;
UpdateTooltip();
}
}
#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 (_NextPageTooltip); }
set
{
_NextPageTooltip = value;
UpdateTooltip();
}
}
#endregion
#endregion
#region RecalcSize
/// <summary>
/// Handles size recalc
/// </summary>
public override void RecalcSize()
{
// Update our layout
UpdateLayout();
base.RecalcSize();
}
#endregion
#region OnExternalSizeChange
/// <summary>
/// Handles external size changes
/// </summary>
protected override void OnExternalSizeChange()
{
UpdateLayout();
base.OnExternalSizeChange();
}
#endregion
#region UpdateLayout
/// <summary>
/// Lays out our control based upon its
/// vertical / horizontal orientation
/// </summary>
private void UpdateLayout()
{
Rectangle r = Bounds;
if (Orientation == eOrientation.Horizontal)
{
int dx = r.Width / 3;
_PreviousPageBounds = new Rectangle(r.Left, r.Top, dx, r.Height);
_NextPageBounds = new Rectangle(r.Right - dx, r.Top, dx, r.Height);
_TodayBounds = new Rectangle(r.Left + dx, r.Top, r.Width - dx * 2, r.Height);
}
else
{
int dy = r.Height / 3;
_PreviousPageBounds = new Rectangle(r.Left, r.Top, r.Width, dy);
_NextPageBounds = new Rectangle(r.Left, r.Bottom - dy, r.Width, dy);
_TodayBounds = new Rectangle(r.Left, r.Y + dy, r.Width, r.Height - dy * 2);
}
}
#endregion
#region Paint
/// <summary>
/// Handles control rendering
/// </summary>
/// <param name="e"></param>
public override void Paint(ItemPaintArgs e)
{
Graphics g = e.Graphics;
Office2007ScrollBarColorTable colorTable =
((Office2007Renderer)GlobalManager.Renderer).ColorTable.ScrollBar;
DrawPreviousPage(g, colorTable);
DrawToday(g, colorTable);
DrawNextPage(g, colorTable);
}
#region DrawPreviousPage
/// <summary>
/// Draws the PreviousPage button
/// </summary>
/// <param name="g">Graphics</param>
/// <param name="ct">Office2007ScrollBarColorTable</param>
private void DrawPreviousPage(Graphics g, Office2007ScrollBarColorTable ct)
{
Office2007ScrollBarStateColorTable cst =
GetPageColorTable(ct, ePageNavigatorPart.PreviousPage);
float angle = (Orientation == eOrientation.Horizontal) ? 90f : 0f;
using (LinearGradientBrush lbr = new LinearGradientBrush(
_PreviousPageBounds, cst.Background.Start, cst.Background.End, angle))
{
if (cst.TrackBackground.Count > 0)
lbr.InterpolationColors =
cst.TrackBackground.GetColorBlend();
g.FillRectangle(lbr, _PreviousPageBounds);
}
g.DrawImageUnscaled(
GetPreviousPageBitmap(g, cst),
CenterRect(_PreviousPageBounds));
}
#region GetPreviousPageBitmap
/// <summary>
/// Gets the PreviousPage bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap GetPreviousPageBitmap(
Graphics g, Office2007ScrollBarStateColorTable cst)
{
if (_PreviousPageBitmap == null)
_PreviousPageBitmap = CreatePreviousPageBitmap(g, cst);
return (_PreviousPageBitmap);
}
/// <summary>
/// Creates the PreviousPage bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap CreatePreviousPageBitmap(
Graphics g, Office2007ScrollBarStateColorTable cst)
{
Bitmap bmp = new Bitmap(Dpi.Width10, Dpi.Height10, g);
using (Graphics gBmp = Graphics.FromImage(bmp))
{
using (GraphicsPath path = new GraphicsPath())
{
float angle;
if (Orientation == eOrientation.Horizontal)
{
angle = 90;
path.AddLines(new Point[] {
new Point(Dpi.Width8,0),
new Point(Dpi.Width4,Dpi.Height4),
new Point(Dpi.Width8,Dpi.Height8)
});
path.CloseFigure();
path.AddLines(new Point[] {
new Point(Dpi.Width4,0),
new Point(0,Dpi.Height4),
new Point(Dpi.Width4,Dpi.Height8)
});
path.CloseFigure();
}
else
{
angle = 0;
path.AddLines(new Point[] {
new Point(0,Dpi.Height5),
new Point(Dpi.Width4,0),
new Point(Dpi.Width8,Dpi.Height5)
});
path.CloseFigure();
path.AddLines(new Point[] {
new Point(0,Dpi.Height9),
new Point(Dpi.Width4,Dpi.Height4),
new Point(Dpi.Width8,Dpi.Height9)
});
path.CloseFigure();
}
Rectangle r = new Rectangle(0, 0, Dpi.Width10, Dpi.Height10);
using (LinearGradientBrush lbr = new
LinearGradientBrush(r, cst.ThumbSignBackground.Start, cst.ThumbSignBackground.End, angle))
{
gBmp.FillPath(lbr, path);
}
}
}
return (bmp);
}
#endregion
#endregion
#region DrawToday
/// <summary>
/// Draws the Today button
/// </summary>
/// <param name="g">Graphics</param>
/// <param name="ct">Office2007ScrollBarColorTable</param>
private void DrawToday(Graphics g, Office2007ScrollBarColorTable ct)
{
Office2007ScrollBarStateColorTable cst =
GetPageColorTable(ct, ePageNavigatorPart.Today);
float angle = (Orientation == eOrientation.Horizontal) ? 90f : 0f;
using (LinearGradientBrush lbr = new LinearGradientBrush(
_TodayBounds, cst.Background.Start, cst.Background.End, angle))
{
if (cst.TrackBackground.Count > 0)
lbr.InterpolationColors = cst.TrackBackground.GetColorBlend();
g.FillRectangle(lbr, _TodayBounds);
}
g.DrawImageUnscaled(
GetTodayBitmap(g, cst),
CenterRect(_TodayBounds));
}
#region GetTodayBitmap
/// <summary>
/// Gets the Today Bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap GetTodayBitmap(
Graphics g, Office2007ScrollBarStateColorTable cst)
{
if (_TodayBitmap == null)
_TodayBitmap = CreateTodayBitmap(g, cst);
return (_TodayBitmap);
}
/// <summary>
/// Creates the Today Bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap CreateTodayBitmap(
Graphics g, Office2007ScrollBarStateColorTable cst)
{
Bitmap bmp = new Bitmap(Dpi.Width10, Dpi.Height10, g);
using (Graphics gBmp = Graphics.FromImage(bmp))
{
Rectangle r = new Rectangle(Dpi.Width1, Dpi.Height1, Dpi.Width6, Dpi.Height6);
gBmp.SmoothingMode = SmoothingMode.HighQuality;
Color color = ControlPaint.LightLight(cst.ThumbSignBackground.Start);
using (SolidBrush br = new SolidBrush(color))
{
gBmp.FillEllipse(br, r);
}
using (Pen pen = new Pen(cst.ThumbSignBackground.End, Dpi.Width1))
{
gBmp.DrawEllipse(pen, r);
}
}
return (bmp);
}
#endregion
#endregion
#region DrawNextPage
/// <summary>
/// Draws the NextPage button
/// </summary>
/// <param name="g"></param>
/// <param name="ct"></param>
private void DrawNextPage(Graphics g, Office2007ScrollBarColorTable ct)
{
Office2007ScrollBarStateColorTable cst =
GetPageColorTable(ct, ePageNavigatorPart.NextPage);
float angle = (Orientation == eOrientation.Horizontal) ? 90f : 0f;
using (LinearGradientBrush lbr = new LinearGradientBrush(
_NextPageBounds, cst.Background.Start, cst.Background.End, angle))
{
if (cst.TrackBackground.Count > 0)
lbr.InterpolationColors = cst.TrackBackground.GetColorBlend();
g.FillRectangle(lbr, _NextPageBounds);
}
g.DrawImageUnscaled(
GetNextPageBitmap(g, cst),
CenterRect(_NextPageBounds));
}
#region GetNextPageBitmap
/// <summary>
/// Gets the NextPage Bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap GetNextPageBitmap(Graphics g, Office2007ScrollBarStateColorTable cst)
{
if (_NextPageBitmap == null)
_NextPageBitmap = CreateNextPageBitmap(g, cst);
return (_NextPageBitmap);
}
/// <summary>
/// Creates the NextPage Bitmap
/// </summary>
/// <param name="g"></param>
/// <param name="cst"></param>
/// <returns></returns>
private Bitmap CreateNextPageBitmap(Graphics g, Office2007ScrollBarStateColorTable cst)
{
Bitmap bmp = new Bitmap(Dpi.Width10, Dpi.Height10, g);
using (Graphics gBmp = Graphics.FromImage(bmp))
{
using (GraphicsPath path = new GraphicsPath())
{
float angle;
if (Orientation == eOrientation.Horizontal)
{
angle = 90;
path.AddLines(new Point[] {
new Point(Dpi.Width1,0),
new Point(Dpi.Width5,Dpi.Height4),
new Point(Dpi.Width1,Dpi.Height8)
});
path.CloseFigure();
path.AddLines(new Point[] {
new Point(Dpi.Width5,0),
new Point(Dpi.Width9,Dpi.Height4),
new Point(Dpi.Width5,Dpi.Height8)
});
path.CloseFigure();
}
else
{
angle = 0;
path.AddLines(new Point[] {
new Point(Dpi.Width1,0),
new Point(Dpi.Width8,0),
new Point(Dpi.Width4,Dpi.Height4)
});
path.CloseFigure();
path.AddLines(new Point[] {
new Point(Dpi.Width1,Dpi.Height4),
new Point(Dpi.Width8,Dpi.Height4),
new Point(Dpi.Width4,Dpi.Height8)
});
path.CloseFigure();
}
Rectangle r = new Rectangle(0, 0, Dpi.Width10, Dpi.Height10);
DisplayHelp.FillPath(gBmp, path, cst.ThumbSignBackground);
//using (LinearGradientBrush lbr = new
// LinearGradientBrush(r, cst.ThumbSignBackground.Start, cst.ThumbSignBackground.End, angle))
//{
// gBmp.FillPath(lbr, path);
//}
}
}
return (bmp);
}
#endregion
#endregion
#region GetPageColorTable
private Office2007ScrollBarStateColorTable
GetPageColorTable(Office2007ScrollBarColorTable ct, ePageNavigatorPart part)
{
if (GetEnabled() == false)
return (ct.Disabled);
if (MouseDownPart == part)
return (ct.Pressed);
if (MouseOverPart == part)
return (ct.MouseOver);
return (ct.Default);
}
#endregion
#region CenterRect
/// <summary>
/// Centers the given rect
/// </summary>
/// <param name="r"></param>
/// <returns></returns>
private Rectangle CenterRect(Rectangle r)
{
r.X += (r.Width - 10) / 2 + 1;
r.Y += (r.Height - 10) / 2 + 1;
if (r.X < 0)
r.X = 0;
if (r.Y < 0)
r.Y = 0;
return (r);
}
#endregion
#endregion
#region Mouse support
#region InternalMouseMove
/// <summary>
/// Processes InternalMouseMove events
/// </summary>
/// <param name="objArg"></param>
public override void InternalMouseMove(MouseEventArgs objArg)
{
if (GetEnabled() == true && DesignMode == false)
{
if (MouseDownPart == ePageNavigatorPart.None)
MouseOverPart = HitTest(objArg.Location);
}
base.InternalMouseMove(objArg);
}
#region HitTest
/// <summary>
/// Returns the HitText area for the given point
/// </summary>
/// <param name="pt"></param>
/// <returns></returns>
public ePageNavigatorPart HitTest(Point pt)
{
if (_PreviousPageBounds.Contains(pt))
return (ePageNavigatorPart.PreviousPage);
if (_NextPageBounds.Contains(pt))
return (ePageNavigatorPart.NextPage);
if (_TodayBounds.Contains(pt))
return (ePageNavigatorPart.Today);
return (ePageNavigatorPart.None);
}
#endregion
#endregion
#region InternalMouseLeave
/// <summary>
/// Processes Mouse Leave events
/// </summary>
public override void InternalMouseLeave()
{
DisposeClickTimer();
MouseOverPart = ePageNavigatorPart.None;
MouseDownPart = ePageNavigatorPart.None;
base.InternalMouseLeave();
}
#endregion
#region InternalMouseDown
/// <summary>
/// Processes Mouse Down events
/// </summary>
/// <param name="objArg"></param>
public override void InternalMouseDown(MouseEventArgs objArg)
{
if (objArg.Button == MouseButtons.Left)
{
if (GetEnabled() && DesignMode == false)
{
MouseDownPart = HitTest(objArg.Location);
if (MouseDownPart != ePageNavigatorPart.None)
{
switch (MouseDownPart)
{
case ePageNavigatorPart.PreviousPage:
OnNavigatePreviousPage();
break;
case ePageNavigatorPart.NextPage:
OnNavigateNextPage();
break;
default:
OnNavigateToday();
break;
}
}
}
}
base.InternalMouseDown(objArg);
}
#endregion
#region InternalMouseUp
/// <summary>
/// Processes Mouse Up events
/// </summary>
/// <param name="objArg"></param>
public override void InternalMouseUp(MouseEventArgs objArg)
{
DisposeClickTimer();
MouseDownPart = ePageNavigatorPart.None;
base.InternalMouseUp(objArg);
}
#endregion
#endregion
#region OnNavigate
/// <summary>
/// Raises the NavigatePreviousPage event
/// </summary>
protected virtual void OnNavigatePreviousPage()
{
if (NavigatePreviousPage != null)
NavigatePreviousPage(this, EventArgs.Empty);
EnableClickTimer();
}
/// <summary>
/// Raises the NavigateToday event
/// </summary>
protected virtual void OnNavigateToday()
{
if (NavigateToday != null)
NavigateToday(this, EventArgs.Empty);
}
/// <summary>
/// Raises the NavigateNextPage event
/// </summary>
protected virtual void OnNavigateNextPage()
{
if (NavigateNextPage != null)
NavigateNextPage(this, EventArgs.Empty);
EnableClickTimer();
}
#endregion
#region Timer support
#region ClickTimerTick
/// <summary>
/// Handles timer click events
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ClickTimerTick(object sender, EventArgs e)
{
switch (MouseDownPart)
{
case ePageNavigatorPart.PreviousPage:
OnNavigatePreviousPage();
break;
case ePageNavigatorPart.NextPage:
OnNavigateNextPage();
break;
}
// Auto ramp-up
if (_ClickTimer != null)
{
_AutoClickCount++;
if (_AutoClickCount > 4 && _ClickTimer.Interval > 20)
_ClickTimer.Interval -= 10;
}
}
#endregion
#region UpdateClickTimer
/// <summary>
/// Enables our click timer
/// </summary>
private void EnableClickTimer()
{
if (ClickRepeatInterval > 0)
{
if (_ClickTimer == null)
{
_ClickTimer = new Timer();
_ClickTimer.Interval = ClickRepeatInterval;
_ClickTimer.Tick += ClickTimerTick;
_ClickTimer.Start();
_AutoClickCount = 0;
}
}
}
#endregion
#region DisposeClickTimer
/// <summary>
/// Disposes of the click timer
/// </summary>
private void DisposeClickTimer()
{
if (_ClickTimer != null)
{
_ClickTimer.Tick -= ClickTimerTick;
_ClickTimer.Stop();
_ClickTimer.Dispose();
_ClickTimer = null;
}
}
#endregion
#endregion
#region OnTooltipChanged
/// <summary>
/// OnTooltipChanged
/// </summary>
protected override void OnTooltipChanged()
{
UpdateTooltip();
base.OnTooltipChanged();
}
#endregion
#region UpdateTooltip
/// <summary>
/// Updates the control tooltip
/// </summary>
private void UpdateTooltip()
{
if (this.DesignMode == false)
{
string tip = "";
switch (MouseOverPart)
{
case ePageNavigatorPart.PreviousPage:
tip = _PreviousPageTooltip;
break;
case ePageNavigatorPart.Today:
tip = _TodayTooltip;
break;
case ePageNavigatorPart.NextPage:
tip = _NextPageTooltip;
break;
}
if (tip.Equals("") == false)
{
if (m_Tooltip != tip)
{
m_Tooltip = tip;
if (this.ToolTipVisible)
this.ShowToolTip();
}
}
}
}
#endregion
#region Copy
/// <summary>
/// Returns copy of the item
/// </summary>
public override BaseItem Copy()
{
PageNavigatorItem objCopy = new PageNavigatorItem(Name);
this.CopyToItem(objCopy);
return (objCopy);
}
/// <summary>
/// Copies the PageNavigatorItem specific properties to
/// new instance of the item
/// </summary>
/// <param name="copy">New PageNavigatorItem instance</param>
protected override void CopyToItem(BaseItem copy)
{
PageNavigatorItem c = copy as PageNavigatorItem;
if (c != null)
{
base.CopyToItem(c);
c.PreviousPageTooltip = _PreviousPageTooltip;
c.TodayTooltip = _TodayTooltip;
c.NextPageTooltip = _NextPageTooltip;
}
}
#endregion
#region Dispose
/// <summary>
/// Dispose
/// </summary>
protected override void Dispose(bool disposing)
{
DisposeClickTimer();
ReleaseBitmap(ref _PreviousPageBitmap);
ReleaseBitmap(ref _TodayBitmap);
ReleaseBitmap(ref _NextPageBitmap);
base.Dispose(disposing);
}
/// <summary>
/// Releases the given bitmap
/// </summary>
/// <param name="bmp">Bitmap to release</param>
private void ReleaseBitmap(ref Bitmap bmp)
{
if (bmp != null)
{
bmp.Dispose();
bmp = null;
}
}
#endregion
}
#region Enums
/// <summary>
/// Defines the PageNavigator item parts
/// </summary>
public enum ePageNavigatorPart
{
/// <summary>
/// Indicates no part
/// </summary>
None,
/// <summary>
/// Indicates the PreviousPage button of the control
/// </summary>
PreviousPage,
/// <summary>
/// Indicates the TodayPage button of the control
/// </summary>
Today,
/// <summary>
/// Indicates the NextPage button of the control
/// </summary>
NextPage,
}
#endregion
}
#endif