1714 lines
53 KiB
C#
1714 lines
53 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using DevComponents.DotNetBar.Rendering;
|
|
|
|
namespace DevComponents.DotNetBar.Schedule
|
|
{
|
|
/// <summary>
|
|
/// Represents date-navigation control that is used with CalendarView to provide calendar date navigation.
|
|
/// </summary>
|
|
[ToolboxItem(true), ToolboxBitmap(typeof(DateNavigator), "Schedule.DateNavigator.ico")]
|
|
[Designer("DevComponents.DotNetBar.Design.DateNavigatorDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
|
public partial class DateNavigator : PanelEx
|
|
{
|
|
#region Events
|
|
|
|
/// <summary>
|
|
/// Occurs when a date Navigation is occurring
|
|
/// </summary>
|
|
[Description("Occurs when a date Navigation is occurring.")]
|
|
public event EventHandler<DateChangingEventArgs> DateChanging;
|
|
|
|
/// <summary>
|
|
/// Occurs when a date Navigation has occurred
|
|
/// </summary>
|
|
[Description("Occurs when a date Navigation has occurred.")]
|
|
public event EventHandler<DateChangedEventArgs> DateChanged;
|
|
|
|
/// <summary>
|
|
/// Occurs when the DateNavigator needs a formatted date label
|
|
/// </summary>
|
|
[Description("Occurs when the DateNavigator needs a formatted date label.")]
|
|
public event EventHandler<GetDateLabelEventArgs> GetDateLabel;
|
|
|
|
#endregion
|
|
|
|
#region Constants
|
|
|
|
private const int MaxYearMonthSpan = 120;
|
|
|
|
#endregion
|
|
|
|
#region Private variables
|
|
|
|
private CalendarView _CalendarView;
|
|
|
|
private string _CurrentDayLabel = "MMMM dd, yyyy";
|
|
|
|
private string _CurrentWeekStartLabel = "MMMM dd, yyyy";
|
|
private string _CurrentWeekEndLabel = "MMMM dd, yyyy";
|
|
private string _CurrentWeekSameYearStartLabel = "MMMM dd";
|
|
private string _CurrentWeekSameYearEndLabel = "MMMM dd, yyyy";
|
|
private string _CurrentWeekSameMonthYearStartLabel = "MMMM dd";
|
|
private string _CurrentWeekSameMonthYearEndLabel = "dd, yyyy";
|
|
|
|
private string _CurrentMonthStartLabel = "MMMM yyyy";
|
|
private string _CurrentMonthEndLabel = "MMMM yyyy";
|
|
|
|
private string _CurrentYearStartLabel = "MMMM yyyy";
|
|
private string _CurrentYearEndLabel = "MMMM yyyy";
|
|
|
|
private string _CurrentTimeLineHourLabel = "MMMM dd, yyyy";
|
|
private string _CurrentTimeLineDayStartLabel = "MMMM dd, yyyy";
|
|
private string _CurrentTimeLineDayEndLabel = "MMMM dd, yyyy";
|
|
private string _CurrentTimeLineDaySameYearStartLabel = "MMMM dd";
|
|
private string _CurrentTimeLineDaySameYearEndLabel = "MMMM dd, yyyy";
|
|
private string _CurrentTimeLineDaySameMonthYearStartLabel = "MMMM dd";
|
|
private string _CurrentTimeLineDaySameMonthYearEndLabel = "dd, yyyy";
|
|
private string _CurrentTimeLineYearStartLabel = "yyyy";
|
|
private string _CurrentTimeLineYearEndLabel = "yyyy";
|
|
|
|
#endregion
|
|
|
|
public DateNavigator()
|
|
{
|
|
InitializeComponent();
|
|
UpdateButtonImages();
|
|
|
|
Style.BackColor1.Color =
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.CalendarView.TimeRulerColors[0].Colors[0];
|
|
|
|
StyleManager.Register(this);
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
#region CalendarView
|
|
|
|
/// <summary>
|
|
/// Gets or sets the CalendarView date navigation will be applied to.
|
|
/// </summary>
|
|
[DefaultValue(null), Category("Behavior")]
|
|
[Description("Indicates CalendarView date navigation will be applied to.")]
|
|
public CalendarView CalendarView
|
|
{
|
|
get { return _CalendarView; }
|
|
|
|
set
|
|
{
|
|
if (_CalendarView != null)
|
|
{
|
|
_CalendarView.SelectedViewChanged -= CalendarSelectedViewChanged;
|
|
_CalendarView.ViewDateChanged -= CalendarViewViewDateChanged;
|
|
_CalendarView.TimeLineViewScrollDateChanged -= CalendarViewTimeLineViewScrollDateChanged;
|
|
}
|
|
|
|
_CalendarView = value;
|
|
|
|
if (_CalendarView != null)
|
|
{
|
|
_CalendarView.SelectedViewChanged += CalendarSelectedViewChanged;
|
|
_CalendarView.ViewDateChanged += CalendarViewViewDateChanged;
|
|
_CalendarView.TimeLineViewScrollDateChanged += CalendarViewTimeLineViewScrollDateChanged;
|
|
}
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Handles CalendarView ViewDateChanged events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
void CalendarViewViewDateChanged(object sender, ViewDateChangedEventArgs e)
|
|
{
|
|
UpdateDisplay();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Handle CalendarView SelectedViewChanged events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CalendarSelectedViewChanged(object sender, SelectedViewEventArgs e)
|
|
{
|
|
UpdateDisplay();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Handles CalendarView_TimeLineViewScrollDateChanged events
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
void CalendarViewTimeLineViewScrollDateChanged(object sender, EventArgs e)
|
|
{
|
|
UpdateDisplay();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentDayLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Day format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Day format label.")]
|
|
public string CurrentDayLabel
|
|
{
|
|
get { return (_CurrentDayLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentDayLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Week, start format label.")]
|
|
public string CurrentWeekStartLabel
|
|
{
|
|
get { return (_CurrentWeekStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Week, end format label.")]
|
|
public string CurrentWeekEndLabel
|
|
{
|
|
get { return (_CurrentWeekEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekSameYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, same Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd"), Category("Appearance")]
|
|
[Description("Indicates the current Week, same Year, start format label.")]
|
|
public string CurrentWeekSameYearStartLabel
|
|
{
|
|
get { return (_CurrentWeekSameYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekSameYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekSameYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, same Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Week, same Year, end format label.")]
|
|
public string CurrentWeekSameYearEndLabel
|
|
{
|
|
get { return (_CurrentWeekSameYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekSameYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekSameMonthYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, same Month & Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd"), Category("Appearance")]
|
|
[Description("Indicates the current Week, same Month & Year, start format label.")]
|
|
public string CurrentWeekSameMonthYearStartLabel
|
|
{
|
|
get { return (_CurrentWeekSameMonthYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekSameMonthYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentWeekSameMonthYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Week, same Month & Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Week, same Month & Year, end format label.")]
|
|
public string CurrentWeekSameMonthYearEndLabel
|
|
{
|
|
get { return (_CurrentWeekSameMonthYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentWeekSameMonthYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentMonthStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Month, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Month, start format label.")]
|
|
public string CurrentMonthStartLabel
|
|
{
|
|
get { return (_CurrentMonthStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentMonthStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentMonthEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Month, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Month, end format label.")]
|
|
public string CurrentMonthEndLabel
|
|
{
|
|
get { return (_CurrentMonthEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentMonthEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Year, start format label.")]
|
|
public string CurrentYearStartLabel
|
|
{
|
|
get { return (_CurrentYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current Year, end format label.")]
|
|
public string CurrentYearEndLabel
|
|
{
|
|
get { return (_CurrentYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineHourLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Hour format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Hour format label.")]
|
|
public string CurrentTimeLineHourLabel
|
|
{
|
|
get { return (_CurrentTimeLineHourLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineHourLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDayStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, start format label.")]
|
|
public string CurrentTimeLineDayStartLabel
|
|
{
|
|
get { return (_CurrentTimeLineDayStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDayStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDayEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, end format label.")]
|
|
public string CurrentTimeLineDayEndLabel
|
|
{
|
|
get { return (_CurrentTimeLineDayEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDayEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDaySameYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, same Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, same Year, start format label.")]
|
|
public string CurrentTimeLineDaySameYearStartLabel
|
|
{
|
|
get { return (_CurrentTimeLineDaySameYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDaySameYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDaySameYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, same Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, same Year, end format label.")]
|
|
public string CurrentTimeLineDaySameYearEndLabel
|
|
{
|
|
get { return (_CurrentTimeLineDaySameYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDaySameYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDaySameMonthYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, same Month & Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("MMMM dd"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, same Month & Year, start format label.")]
|
|
public string CurrentTimeLineDaySameMonthYearStartLabel
|
|
{
|
|
get { return (_CurrentTimeLineDaySameMonthYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDaySameMonthYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineDaySameMonthYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Day, same Month & Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("dd, yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Day, same Month & Year, end format label.")]
|
|
public string CurrentTimeLineDaySameMonthYearEndLabel
|
|
{
|
|
get { return (_CurrentTimeLineDaySameMonthYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineDaySameMonthYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineYearStartLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Year, start format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Year, start format label.")]
|
|
public string CurrentTimeLineYearStartLabel
|
|
{
|
|
get { return (_CurrentTimeLineYearStartLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineYearStartLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CurrentTimeLineYearEndLabel
|
|
|
|
/// <summary>
|
|
/// Gets or sets the current TimeLine Year, end format label
|
|
/// </summary>
|
|
[Localizable(true), DefaultValue("yyyy"), Category("Appearance")]
|
|
[Description("Indicates the current TimeLine Year, end format label.")]
|
|
public string CurrentTimeLineYearEndLabel
|
|
{
|
|
get { return (_CurrentTimeLineYearEndLabel); }
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
value = "";
|
|
|
|
_CurrentTimeLineYearEndLabel = value;
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region WeekDaysNavigationEnabled
|
|
|
|
private bool _WeekDaysNavigationEnabled = true;
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether in Week View week-days navigation is enabled. Default value is true. When week-days navigation is enabled
|
|
/// and start date points to Monday and end date points to Friday, navigating to next day will navigate to next Monday-Friday view.
|
|
/// </summary>
|
|
[DefaultValue(true), Category("Behavior")]
|
|
[Description("Indicates whether in Week View week-days navigation is enabled. When week-days navigation is enabled and start date points to Monday and end date points to Friday, navigating to next day will navigate to next Monday-Friday view.")]
|
|
public bool WeekDaysNavigationEnabled
|
|
{
|
|
get { return _WeekDaysNavigationEnabled; }
|
|
set
|
|
{
|
|
_WeekDaysNavigationEnabled = value;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region StyleManagerStyleChanged
|
|
|
|
/// <summary>
|
|
/// Called by StyleManager to notify control that style on manager has changed and that control should refresh its appearance if
|
|
/// its style is controlled by StyleManager.
|
|
/// </summary>
|
|
/// <param name="newStyle">New active style.</param>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override void StyleManagerStyleChanged(eDotNetBarStyle newStyle)
|
|
{
|
|
base.StyleManagerStyleChanged(newStyle);
|
|
UpdateButtonImages();
|
|
this.Style.BackColor1.Color = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.CalendarView.TimeRulerColors[0].Colors[0];
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Navigate_click routines
|
|
|
|
/// <summary>
|
|
/// Handles NavigateForward button clicks
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void NavigateForwardClick(object sender, EventArgs e)
|
|
{
|
|
NavigateDatesForward();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Handles NavigateBack button clicks
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void NavigateBackClick(object sender, EventArgs e)
|
|
{
|
|
NavigateDatesBack();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateDatesForward
|
|
|
|
/// <summary>
|
|
/// Navigates forward
|
|
/// </summary>
|
|
private void NavigateDatesForward()
|
|
{
|
|
if (_CalendarView != null)
|
|
{
|
|
switch (_CalendarView.SelectedView)
|
|
{
|
|
case eCalendarView.Day:
|
|
NavigateDayForward();
|
|
break;
|
|
|
|
case eCalendarView.Week:
|
|
NavigateWeekForward();
|
|
break;
|
|
|
|
case eCalendarView.Month:
|
|
NavigateMonthForward();
|
|
break;
|
|
|
|
case eCalendarView.Year:
|
|
NavigateYearForward();
|
|
break;
|
|
|
|
case eCalendarView.TimeLine:
|
|
NavigateTimeLineForward();
|
|
break;
|
|
}
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#region NavigateDayForward
|
|
|
|
/// <summary>
|
|
/// NavigateDayForward
|
|
/// </summary>
|
|
private void NavigateDayForward()
|
|
{
|
|
DateTime oldDate = _CalendarView.DayViewDate;
|
|
DateTime newDate = _CalendarView.DayViewDate.AddDays(1);
|
|
|
|
if (DoDateChanging(NavigationDirection.Forward,
|
|
oldDate, oldDate, ref newDate, ref newDate) == false)
|
|
{
|
|
_CalendarView.DayViewDate = newDate;
|
|
|
|
DoDateChanged(NavigationDirection.Forward, oldDate, oldDate, newDate, newDate);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateWeekForward
|
|
|
|
/// <summary>
|
|
/// NavigateWeekForward
|
|
/// </summary>
|
|
private void NavigateWeekForward()
|
|
{
|
|
DateTime calendarStart = _CalendarView.WeekViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.WeekViewEndDate;
|
|
|
|
TimeSpan span = calendarEnd.Subtract(calendarStart);
|
|
DateTime start = calendarStart.AddDays(1).Add(span);
|
|
DateTime end = calendarEnd.AddDays(1).Add(span);
|
|
|
|
if (WeekDaysNavigationEnabled &&
|
|
calendarStart.DayOfWeek == DayOfWeek.Monday && calendarEnd.DayOfWeek == DayOfWeek.Friday)
|
|
{
|
|
// Browse week-days only
|
|
|
|
start = calendarStart.AddDays(7);
|
|
end = start.AddDays(4);
|
|
}
|
|
|
|
if (DoDateChanging(NavigationDirection.Forward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.WeekViewStartDate = start;
|
|
_CalendarView.WeekViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Forward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateMonthForward
|
|
|
|
/// <summary>
|
|
/// NavigateMonthForward
|
|
/// </summary>
|
|
private void NavigateMonthForward()
|
|
{
|
|
DateTime calendarStart = _CalendarView.MonthViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.MonthViewEndDate;
|
|
|
|
TimeSpan span = calendarEnd.Subtract(calendarStart);
|
|
DateTime start = calendarStart.AddMonths(1);
|
|
DateTime end = start.Add(span);
|
|
|
|
if (calendarStart.Day == 1 &&
|
|
calendarEnd.Day == ScheduleSettings.GetActiveCulture().Calendar.GetDaysInMonth(calendarEnd.Year, calendarEnd.Month))
|
|
{
|
|
end = start.AddMonths(1).AddMinutes(-1);
|
|
}
|
|
|
|
if (DoDateChanging(NavigationDirection.Forward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.MonthViewStartDate = start;
|
|
_CalendarView.MonthViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Forward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateYearForward
|
|
|
|
/// <summary>
|
|
/// NavigateYearForward
|
|
/// </summary>
|
|
private void NavigateYearForward()
|
|
{
|
|
DateTime calendarStart = _CalendarView.YearViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.YearViewEndDate;
|
|
|
|
int months = CountMonthSpan(calendarStart, calendarEnd);
|
|
|
|
DateTime start = calendarEnd.AddMonths(1);
|
|
start = start.AddDays(-start.Day + 1);
|
|
|
|
DateTime end = start.AddMonths(months + 1);
|
|
end = end.AddDays(-1);
|
|
|
|
if (DoDateChanging(NavigationDirection.Forward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.YearViewStartDate = start;
|
|
_CalendarView.YearViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Forward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateTimeLineForward
|
|
|
|
/// <summary>
|
|
/// NavigateTimeLineForward
|
|
/// </summary>
|
|
private void NavigateTimeLineForward()
|
|
{
|
|
DateTime calendarStart = _CalendarView.TimeLineViewScrollStartDate;
|
|
DateTime calendarEnd = _CalendarView.TimeLineViewScrollEndDate;
|
|
|
|
DateTime start = GetForwardPeriodDate(_CalendarView.TimeLineViewScrollStartDate);
|
|
DateTime end = start;
|
|
|
|
if (DoDateChanging(NavigationDirection.Forward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.TimeLineViewScrollStartDate = start;
|
|
|
|
DoDateChanged(NavigationDirection.Forward, calendarStart, calendarEnd,
|
|
_CalendarView.TimeLineViewScrollStartDate, _CalendarView.TimeLineViewScrollEndDate);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetForwardPeriodDate
|
|
|
|
/// <summary>
|
|
/// Gets the next forward TimeLine Period Date
|
|
/// </summary>
|
|
/// <param name="calendarStart">Current date</param>
|
|
/// <returns>Next Period Date</returns>
|
|
private DateTime GetForwardPeriodDate(DateTime calendarStart)
|
|
{
|
|
// Hours or Minutes
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Minutes ||
|
|
_CalendarView.TimeLinePeriod == eTimeLinePeriod.Hours)
|
|
{
|
|
// Move forward by a day
|
|
|
|
calendarStart = calendarStart.AddDays(1);
|
|
|
|
return (new DateTime(calendarStart.Year,
|
|
calendarStart.Month, calendarStart.Day, 0, 0, 0));
|
|
}
|
|
|
|
// Days
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Days)
|
|
{
|
|
// If our interval is a single day, then
|
|
// move forward by a month
|
|
|
|
if (_CalendarView.TimeLineInterval == 1)
|
|
{
|
|
calendarStart = calendarStart.AddMonths(1);
|
|
|
|
return (new DateTime(calendarStart.Year, calendarStart.Month, 1));
|
|
}
|
|
|
|
// The interval is multiple days, so
|
|
// move forward by a year
|
|
|
|
calendarStart = calendarStart.AddYears(1);
|
|
|
|
if (calendarStart.AddMinutes(_CalendarView.BaseInterval).Year > calendarStart.Year)
|
|
calendarStart = calendarStart.AddYears(1);
|
|
|
|
return (new DateTime(calendarStart.Year, 1, 1));
|
|
}
|
|
|
|
// Years
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Years)
|
|
{
|
|
TimeSpan ts = calendarStart - _CalendarView.TimeLineViewStartDate;
|
|
|
|
// Move forward by 10 columns at a time
|
|
|
|
int interval = (int)(ts.TotalMinutes / _CalendarView.BaseInterval);
|
|
|
|
interval = ((interval + 10) / 10) * 10;
|
|
|
|
return (_CalendarView.TimeLineViewStartDate.AddMinutes(
|
|
interval * _CalendarView.BaseInterval));
|
|
}
|
|
|
|
return (calendarStart);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region NavigateDatesBack
|
|
|
|
/// <summary>
|
|
/// Navigates back
|
|
/// </summary>
|
|
private void NavigateDatesBack()
|
|
{
|
|
if (_CalendarView != null)
|
|
{
|
|
switch (_CalendarView.SelectedView)
|
|
{
|
|
case eCalendarView.Day:
|
|
NavigateDayBack();
|
|
break;
|
|
|
|
case eCalendarView.Week:
|
|
NavigateWeekBack();
|
|
break;
|
|
|
|
case eCalendarView.Month:
|
|
NavigateMonthBack();
|
|
break;
|
|
|
|
case eCalendarView.Year:
|
|
NavigateYearBack();
|
|
break;
|
|
|
|
case eCalendarView.TimeLine:
|
|
NavigateTimeLineBack();
|
|
break;
|
|
}
|
|
|
|
UpdateDisplay();
|
|
}
|
|
}
|
|
|
|
#region NavigateDayBack
|
|
|
|
/// <summary>
|
|
/// NavigateDayBack
|
|
/// </summary>
|
|
private void NavigateDayBack()
|
|
{
|
|
DateTime oldDate = _CalendarView.DayViewDate;
|
|
DateTime newDate = _CalendarView.DayViewDate.AddDays(-1);
|
|
|
|
if (DoDateChanging(NavigationDirection.Backward,
|
|
oldDate, oldDate, ref newDate, ref newDate) == false)
|
|
{
|
|
_CalendarView.DayViewDate = newDate;
|
|
|
|
DoDateChanged(NavigationDirection.Backward, oldDate, oldDate, newDate, newDate);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateWeekBack
|
|
|
|
/// <summary>
|
|
/// NavigateWeekBack
|
|
/// </summary>
|
|
private void NavigateWeekBack()
|
|
{
|
|
DateTime calendarStart = _CalendarView.WeekViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.WeekViewEndDate;
|
|
|
|
TimeSpan span = calendarEnd.Subtract(calendarStart).Negate();
|
|
DateTime start = calendarStart.AddDays(-1).Add(span);
|
|
DateTime end = calendarEnd.AddDays(-1).Add(span);
|
|
|
|
if (WeekDaysNavigationEnabled &&
|
|
calendarStart.DayOfWeek == DayOfWeek.Monday && calendarEnd.DayOfWeek == DayOfWeek.Friday)
|
|
{
|
|
// Browse week-days only
|
|
|
|
start = calendarStart.AddDays(-7);
|
|
end = start.AddDays(4);
|
|
}
|
|
|
|
if (DoDateChanging(NavigationDirection.Backward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.WeekViewStartDate = start;
|
|
_CalendarView.WeekViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Backward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateMonthBack
|
|
|
|
/// <summary>
|
|
/// NavigateMonthBack
|
|
/// </summary>
|
|
private void NavigateMonthBack()
|
|
{
|
|
DateTime calendarStart = _CalendarView.MonthViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.MonthViewEndDate;
|
|
|
|
TimeSpan span = calendarEnd.Subtract(calendarStart);
|
|
DateTime start = calendarStart.AddMonths(-1);
|
|
DateTime end = start.Add(span);
|
|
|
|
if (calendarStart.Day == 1 &&
|
|
calendarEnd.Day == ScheduleSettings.GetActiveCulture().Calendar.GetDaysInMonth(calendarEnd.Year, calendarEnd.Month))
|
|
{
|
|
end = start.AddMonths(1).AddMinutes(-1);
|
|
}
|
|
|
|
if (DoDateChanging(NavigationDirection.Backward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.MonthViewStartDate = start;
|
|
_CalendarView.MonthViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Backward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateYearBack
|
|
|
|
/// <summary>
|
|
/// NavigateYearBack
|
|
/// </summary>
|
|
private void NavigateYearBack()
|
|
{
|
|
DateTime calendarStart = _CalendarView.YearViewStartDate;
|
|
DateTime calendarEnd = _CalendarView.YearViewEndDate;
|
|
|
|
int months = CountMonthSpan(calendarStart, calendarEnd);
|
|
|
|
DateTime end = calendarStart.AddDays(-1);
|
|
DateTime start = end.AddMonths(-months);
|
|
start = start.AddDays(-start.Day + 1);
|
|
|
|
if (DoDateChanging(NavigationDirection.Backward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.YearViewStartDate = start;
|
|
_CalendarView.YearViewEndDate = end;
|
|
|
|
DoDateChanged(NavigationDirection.Backward, calendarStart, calendarEnd, start, end);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region NavigateTimeLineBack
|
|
|
|
/// <summary>
|
|
/// NavigateTimeLineBack
|
|
/// </summary>
|
|
private void NavigateTimeLineBack()
|
|
{
|
|
DateTime calendarStart = _CalendarView.TimeLineViewScrollStartDate;
|
|
DateTime calendarEnd = _CalendarView.TimeLineViewScrollEndDate;
|
|
|
|
DateTime start = GetBackPeriodDate(_CalendarView.TimeLineViewScrollStartDate);
|
|
DateTime end = start;
|
|
|
|
if (DoDateChanging(NavigationDirection.Backward,
|
|
calendarStart, calendarEnd, ref start, ref end) == false)
|
|
{
|
|
_CalendarView.TimeLineViewScrollStartDate = start;
|
|
|
|
DoDateChanged(NavigationDirection.Backward, calendarStart, calendarEnd,
|
|
_CalendarView.TimeLineViewScrollStartDate, _CalendarView.TimeLineViewScrollEndDate);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetBackPeriodDate
|
|
|
|
/// <summary>
|
|
/// Gets the next back TimeLine Period Date
|
|
/// </summary>
|
|
/// <param name="calendarStart">Current date</param>
|
|
/// <returns>Next back Period Date</returns>
|
|
private DateTime GetBackPeriodDate(DateTime calendarStart)
|
|
{
|
|
// Hours or minutes
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Minutes ||
|
|
_CalendarView.TimeLinePeriod == eTimeLinePeriod.Hours)
|
|
{
|
|
// Go back by a day
|
|
|
|
if (calendarStart.Hour == 0)
|
|
calendarStart = calendarStart.AddDays(-1);
|
|
|
|
return (new DateTime(calendarStart.Year,
|
|
calendarStart.Month, calendarStart.Day, 0, 0, 0));
|
|
}
|
|
|
|
// Days
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Days)
|
|
{
|
|
// If the interval is a single day
|
|
// then go back by a month
|
|
|
|
if (_CalendarView.TimeLineInterval == 1)
|
|
{
|
|
if (calendarStart.Day == 1)
|
|
calendarStart = calendarStart.AddMonths(-1);
|
|
|
|
return (new DateTime(calendarStart.Year, calendarStart.Month, 1));
|
|
}
|
|
|
|
// Multi-day interval, go back
|
|
// by a year
|
|
|
|
if (calendarStart.AddMinutes(-_CalendarView.BaseInterval).Year < calendarStart.Year)
|
|
calendarStart = calendarStart.AddYears(-1);
|
|
|
|
return (new DateTime(calendarStart.Year, 1, 1));
|
|
}
|
|
|
|
// Years
|
|
|
|
if (_CalendarView.TimeLinePeriod == eTimeLinePeriod.Years)
|
|
{
|
|
TimeSpan ts = calendarStart - _CalendarView.TimeLineViewStartDate;
|
|
|
|
// Go back 10 columns
|
|
|
|
int interval = (int)(ts.TotalMinutes / _CalendarView.BaseInterval);
|
|
|
|
interval = ((interval % 10 == 0)
|
|
? interval - 10 : (interval / 10) * 10);
|
|
|
|
return (_CalendarView.TimeLineViewStartDate.AddMinutes(
|
|
interval * _CalendarView.BaseInterval));
|
|
}
|
|
|
|
return (calendarStart);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region CountMonthSpan
|
|
|
|
/// <summary>
|
|
/// CountMonthSpan
|
|
/// </summary>
|
|
/// <param name="calendarStart"></param>
|
|
/// <param name="calendarEnd"></param>
|
|
/// <returns></returns>
|
|
private int CountMonthSpan(DateTime calendarStart, DateTime calendarEnd)
|
|
{
|
|
int monthSpan = (calendarEnd.Year * 12 + calendarEnd.Month) -
|
|
(calendarStart.Year * 12 + calendarStart.Month);
|
|
|
|
return (monthSpan > MaxYearMonthSpan ? MaxYearMonthSpan : monthSpan);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateDisplay
|
|
|
|
#region UpdateDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the Date Label text
|
|
/// </summary>
|
|
public void UpdateDisplay()
|
|
{
|
|
if (IsDisposed == false)
|
|
{
|
|
if (_CalendarView == null)
|
|
{
|
|
CurrentDateLabel.Text = "";
|
|
}
|
|
else
|
|
{
|
|
if (GetDateLabel != null)
|
|
{
|
|
GetDateLabelEventArgs args = new GetDateLabelEventArgs();
|
|
|
|
GetDateLabel(this, args);
|
|
|
|
if (string.IsNullOrEmpty(args.DateLabel) == false)
|
|
{
|
|
CurrentDateLabel.Text = args.DateLabel;
|
|
return;
|
|
}
|
|
}
|
|
|
|
IFormatProvider formatProvider =
|
|
ScheduleSettings.GetActiveCulture(); //.GetFormat(typeof (DateTime));
|
|
|
|
switch (_CalendarView.SelectedView)
|
|
{
|
|
case eCalendarView.Day:
|
|
UpdateDayDisplay(formatProvider, _CalendarView.DayViewDate);
|
|
break;
|
|
|
|
case eCalendarView.Week:
|
|
UpdateWeekDisplay(formatProvider,
|
|
_CalendarView.WeekViewStartDate, _CalendarView.WeekViewEndDate);
|
|
break;
|
|
|
|
case eCalendarView.Month:
|
|
UpdateMonthDisplay(formatProvider,
|
|
_CalendarView.MonthViewStartDate, _CalendarView.MonthViewEndDate);
|
|
break;
|
|
|
|
case eCalendarView.Year:
|
|
UpdateYearDisplay(formatProvider,
|
|
_CalendarView.YearViewStartDate, _CalendarView.YearViewEndDate);
|
|
break;
|
|
|
|
case eCalendarView.TimeLine:
|
|
UpdateTimeLineDisplay(formatProvider,
|
|
_CalendarView.TimeLineViewScrollStartDate,
|
|
_CalendarView.TimeLineViewScrollEndDate);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateDayDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the DayView display
|
|
/// </summary>
|
|
/// <param name="formatProvider"></param>
|
|
/// <param name="start"></param>
|
|
private void UpdateDayDisplay(IFormatProvider formatProvider, DateTime start)
|
|
{
|
|
CurrentDateLabel.Text = (start == DateTime.MinValue)
|
|
? "" : start.ToString(CurrentDayLabel, formatProvider);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateWeekDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the WeekView display
|
|
/// </summary>
|
|
/// <param name="formatProvider"></param>
|
|
/// <param name="start"></param>
|
|
/// <param name="end"></param>
|
|
private void UpdateWeekDisplay(IFormatProvider formatProvider, DateTime start, DateTime end)
|
|
{
|
|
if (start == DateTime.MinValue || end == DateTime.MinValue)
|
|
{
|
|
CurrentDateLabel.Text = "";
|
|
}
|
|
else
|
|
{
|
|
if (start.Year == end.Year && start.Month == end.Month)
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentWeekSameYearStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentWeekSameYearEndLabel, formatProvider);
|
|
}
|
|
else if (start.Year == end.Year)
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentWeekSameMonthYearStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentWeekSameMonthYearEndLabel, formatProvider);
|
|
}
|
|
else
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentWeekStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentWeekEndLabel, formatProvider);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateMonthDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the MonthView display
|
|
/// </summary>
|
|
/// <param name="formatProvider"></param>
|
|
/// <param name="start"></param>
|
|
/// <param name="end"></param>
|
|
private void UpdateMonthDisplay(IFormatProvider formatProvider, DateTime start, DateTime end)
|
|
{
|
|
if (start == DateTime.MinValue || end == DateTime.MinValue)
|
|
{
|
|
CurrentDateLabel.Text = "";
|
|
}
|
|
else
|
|
{
|
|
string s = start.ToString(CurrentMonthStartLabel, formatProvider);
|
|
|
|
if (end.Year != start.Year)
|
|
s += " - " + end.ToString(CurrentMonthEndLabel, formatProvider);
|
|
|
|
CurrentDateLabel.Text = s;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateYearDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the YearView display
|
|
/// </summary>
|
|
/// <param name="formatProvider"></param>
|
|
/// <param name="start"></param>
|
|
/// <param name="end"></param>
|
|
private void UpdateYearDisplay(IFormatProvider formatProvider, DateTime start, DateTime end)
|
|
{
|
|
if (start == DateTime.MinValue)
|
|
{
|
|
CurrentDateLabel.Text = "";
|
|
}
|
|
else
|
|
{
|
|
string s = start.ToString(CurrentYearStartLabel, formatProvider);
|
|
|
|
if (start.Month != end.Month || start.Year != end.Year)
|
|
s += " - " + end.ToString(CurrentYearEndLabel, formatProvider);
|
|
|
|
CurrentDateLabel.Text = s;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateTimeLineDisplay
|
|
|
|
/// <summary>
|
|
/// Updates the TimeLineView display
|
|
/// </summary>
|
|
/// <param name="formatProvider"></param>
|
|
/// <param name="start"></param>
|
|
/// <param name="end"></param>
|
|
private void UpdateTimeLineDisplay(IFormatProvider formatProvider, DateTime start, DateTime end)
|
|
{
|
|
if (start == DateTime.MinValue || end == DateTime.MinValue)
|
|
{
|
|
CurrentDateLabel.Text = "";
|
|
}
|
|
else
|
|
{
|
|
switch (_CalendarView.TimeLinePeriod)
|
|
{
|
|
case eTimeLinePeriod.Hours:
|
|
case eTimeLinePeriod.Minutes:
|
|
CurrentDateLabel.Text = start.ToString(CurrentTimeLineHourLabel, formatProvider);
|
|
break;
|
|
|
|
case eTimeLinePeriod.Days:
|
|
if (start.Year == end.Year && start.Month == end.Month)
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentTimeLineDaySameMonthYearStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentTimeLineDaySameMonthYearEndLabel, formatProvider);
|
|
}
|
|
else if (start.Year == end.Year)
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentTimeLineDaySameYearStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentTimeLineDaySameYearEndLabel, formatProvider);
|
|
}
|
|
else
|
|
{
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentTimeLineDayStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentTimeLineDayEndLabel, formatProvider);
|
|
}
|
|
break;
|
|
|
|
case eTimeLinePeriod.Years:
|
|
CurrentDateLabel.Text =
|
|
start.ToString(CurrentTimeLineYearStartLabel, formatProvider) + @" - " +
|
|
end.ToString(CurrentTimeLineYearEndLabel, formatProvider);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region UpdateButtonImages
|
|
|
|
/// <summary>
|
|
/// Updates the button images
|
|
/// </summary>
|
|
private void UpdateButtonImages()
|
|
{
|
|
Bitmap image = new Bitmap(10, 10, PixelFormat.Format32bppArgb);
|
|
using (Graphics g = Graphics.FromImage(image))
|
|
{
|
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
|
using (Pen pen = new Pen(GetImageForeColor(), 2))
|
|
{
|
|
g.DrawLines(pen, new Point[] {
|
|
new Point(5,0),
|
|
new Point(1,4),
|
|
new Point(5,8)
|
|
});
|
|
g.DrawLines(pen, new Point[] {
|
|
new Point(1,4),
|
|
new Point(9,4)
|
|
});
|
|
|
|
}
|
|
}
|
|
if (NavigateBack.Image != null)
|
|
{
|
|
Image img = NavigateBack.Image;
|
|
NavigateBack.Image = null;
|
|
img.Dispose();
|
|
}
|
|
NavigateBack.Image = image;
|
|
|
|
|
|
image = new Bitmap(10, 10, PixelFormat.Format32bppArgb);
|
|
using (Graphics g = Graphics.FromImage(image))
|
|
{
|
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
|
using (Pen pen = new Pen(GetImageForeColor(), 2))
|
|
{
|
|
g.DrawLines(pen, new Point[] {
|
|
new Point(0,4),
|
|
new Point(8,4),
|
|
new Point(4,0),
|
|
new Point(8,4),
|
|
new Point(4,8)
|
|
});
|
|
}
|
|
}
|
|
if (NavigateForward.Image != null)
|
|
{
|
|
Image img = NavigateForward.Image;
|
|
NavigateForward.Image = null;
|
|
img.Dispose();
|
|
}
|
|
NavigateForward.Image = image;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets image fore color
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private Color GetImageForeColor()
|
|
{
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
return ((Office2007Renderer)GlobalManager.Renderer).ColorTable.CheckBoxItem.Default.Text;
|
|
}
|
|
|
|
return this.ColorScheme.ItemText;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DoDateChanging
|
|
|
|
private bool DoDateChanging(NavigationDirection direction,
|
|
DateTime oldStartDate, DateTime oldEndDate, ref DateTime newStartDate, ref DateTime newEndDate)
|
|
{
|
|
if (DateChanging != null)
|
|
{
|
|
DateChangingEventArgs ev = new DateChangingEventArgs(
|
|
direction, oldStartDate, oldEndDate, newStartDate, newEndDate);
|
|
|
|
DateChanging(this, ev);
|
|
|
|
if (ev.Cancel == true)
|
|
return (true);
|
|
|
|
newStartDate = ev.NewStartDate;
|
|
newEndDate = ev.NewEndDate;
|
|
}
|
|
|
|
return (false);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DoDateChanged
|
|
|
|
private void DoDateChanged(NavigationDirection direction,
|
|
DateTime oldStartDate, DateTime oldEndDate, DateTime newStartDate, DateTime newEndDate)
|
|
{
|
|
if (DateChanged != null)
|
|
{
|
|
DateChangedEventArgs ev = new DateChangedEventArgs(
|
|
direction, oldStartDate, oldEndDate, newStartDate, newEndDate);
|
|
|
|
DateChanged(this, ev);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DateChangingEventArgs
|
|
|
|
/// <summary>
|
|
/// DateChangingEventArgs
|
|
/// </summary>
|
|
public class DateChangingEventArgs : DateChangedEventArgs
|
|
{
|
|
#region Private variables
|
|
|
|
private bool _Cancel;
|
|
|
|
#endregion
|
|
|
|
public DateChangingEventArgs(NavigationDirection direction,
|
|
DateTime oldStartDate, DateTime oldEndDate, DateTime newStartDate, DateTime newEndDate)
|
|
: base(direction, oldStartDate, oldEndDate, newStartDate, newEndDate)
|
|
{
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether to cancel the operation
|
|
/// </summary>
|
|
public bool Cancel
|
|
{
|
|
get { return (_Cancel); }
|
|
set { _Cancel = value; }
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DateChangedEventArgs
|
|
|
|
/// <summary>
|
|
/// DateChangingEventArgs
|
|
/// </summary>
|
|
public class DateChangedEventArgs : EventArgs
|
|
{
|
|
#region Private variables
|
|
|
|
NavigationDirection _Direction;
|
|
|
|
private DateTime _OldStartDate;
|
|
private DateTime _OldEndDate;
|
|
private DateTime _NewStartDate;
|
|
private DateTime _NewEndDate;
|
|
|
|
#endregion
|
|
|
|
public DateChangedEventArgs(NavigationDirection direction,
|
|
DateTime oldStartDate, DateTime oldEndDate, DateTime newStartDate, DateTime newEndDate)
|
|
{
|
|
_Direction = direction;
|
|
|
|
_OldStartDate = oldStartDate;
|
|
_OldEndDate = oldEndDate;
|
|
_NewStartDate = newStartDate;
|
|
_NewEndDate = newEndDate;
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
/// <summary>
|
|
/// Gets the navigation direction
|
|
/// </summary>
|
|
public NavigationDirection Direction
|
|
{
|
|
get { return (_Direction); }
|
|
set { _Direction = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the old navigation start date
|
|
/// </summary>
|
|
public DateTime OldStartDate
|
|
{
|
|
get { return (_OldStartDate); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the old navigation end date
|
|
/// </summary>
|
|
public DateTime OldEndDate
|
|
{
|
|
get { return (_OldEndDate); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the new navigation start date
|
|
/// </summary>
|
|
public DateTime NewStartDate
|
|
{
|
|
get { return (_NewStartDate); }
|
|
set { _NewStartDate = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the new navigation end date
|
|
/// </summary>
|
|
public DateTime NewEndDate
|
|
{
|
|
get { return (_NewEndDate); }
|
|
set { _NewEndDate = value; }
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetDateLabelEventArgs
|
|
|
|
/// <summary>
|
|
/// GetDateLabelEventArgs
|
|
/// </summary>
|
|
public class GetDateLabelEventArgs : EventArgs
|
|
{
|
|
#region Private variables
|
|
|
|
private string _DateLabel;
|
|
|
|
#endregion
|
|
|
|
#region Public properties
|
|
|
|
/// <summary>
|
|
/// Gets the formatted DateLabel
|
|
/// </summary>
|
|
public string DateLabel
|
|
{
|
|
get { return (_DateLabel); }
|
|
set { _DateLabel = value; }
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#region enums
|
|
|
|
public enum NavigationDirection
|
|
{
|
|
Forward,
|
|
Backward
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
#endif
|
|
|