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
 | 
						|
 |