161 lines
3.9 KiB
C#
161 lines
3.9 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Globalization;
|
|
using System.ComponentModel;
|
|
|
|
namespace DevComponents.Editors.DateTimeAdv
|
|
{
|
|
public class DayLabelItem : VisualLabel, IDateTimePartInput
|
|
{
|
|
#region Private Variables
|
|
|
|
#endregion
|
|
|
|
#region Events
|
|
#endregion
|
|
|
|
#region Constructor
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
private int _Day = -1;
|
|
/// <summary>
|
|
/// Gets or sets the day in numeric format to display. Allowed values are from -1 to 6. -1 represents an empty state.
|
|
/// 0 represents Sunday and 6 Represents Saturday.
|
|
/// </summary>
|
|
[DefaultValue(-1)]
|
|
public int Day
|
|
{
|
|
get { return _Day; }
|
|
set
|
|
{
|
|
if (_Day != value)
|
|
{
|
|
if (_Day < -1 || _Day > 6)
|
|
throw new ArgumentException("Day must be value between -1 and 6");
|
|
_Day = value;
|
|
OnDayChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnDayChanged()
|
|
{
|
|
UpdateLabelText();
|
|
}
|
|
|
|
private void UpdateLabelText()
|
|
{
|
|
if (_Day == -1)
|
|
Text = "";
|
|
else if (_DayNames != null)
|
|
Text = _DayNames[_Day];
|
|
else if (_UseAbbreviatedNames)
|
|
Text = DateTimeInput.GetActiveCulture().DateTimeFormat.AbbreviatedDayNames[_Day];
|
|
else
|
|
Text = DateTimeInput.GetActiveCulture().DateTimeFormat.DayNames[_Day];
|
|
}
|
|
|
|
private List<string> _DayNames = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the array of custom names for days. The array must have exactly 7 elements representing day names from 0 to 6.
|
|
/// </summary>
|
|
public List<string> DayNames
|
|
{
|
|
get { return _DayNames; }
|
|
set
|
|
{
|
|
if (value != null && value.Count != 7)
|
|
throw new ArgumentException("DayNames must have exactly 7 items in collection.");
|
|
_DayNames = value;
|
|
}
|
|
}
|
|
|
|
private bool _UseAbbreviatedNames = false;
|
|
/// <summary>
|
|
/// Gets or sets whether abbreviated day names are used for display instead of full day names. Default value is false.
|
|
/// </summary>
|
|
[DefaultValue(false)]
|
|
public bool UseAbbreviatedNames
|
|
{
|
|
get { return _UseAbbreviatedNames; }
|
|
set
|
|
{
|
|
if (_UseAbbreviatedNames != value)
|
|
{
|
|
_UseAbbreviatedNames = value;
|
|
UpdateLabelText();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region IDateTimePartInput Members
|
|
|
|
int IDateTimePartInput.Value
|
|
{
|
|
get
|
|
{
|
|
return _Day;
|
|
}
|
|
set
|
|
{
|
|
Day = value;
|
|
}
|
|
}
|
|
|
|
int IDateTimePartInput.MinValue
|
|
{
|
|
get
|
|
{
|
|
return 0;
|
|
}
|
|
set
|
|
{
|
|
throw new Exception("The method or operation is not implemented.");
|
|
}
|
|
}
|
|
|
|
int IDateTimePartInput.MaxValue
|
|
{
|
|
get
|
|
{
|
|
return 6;
|
|
}
|
|
set
|
|
{
|
|
throw new Exception("The method or operation is not implemented.");
|
|
}
|
|
}
|
|
|
|
eDateTimePart IDateTimePartInput.Part
|
|
{
|
|
get { return eDateTimePart.DayName; }
|
|
}
|
|
|
|
bool IDateTimePartInput.IsEmpty
|
|
{
|
|
get
|
|
{
|
|
return _Day == -1;
|
|
}
|
|
set
|
|
{
|
|
this.Day = -1;
|
|
}
|
|
}
|
|
|
|
void IDateTimePartInput.UndoInput()
|
|
{
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
#endif
|
|
|