Ejemplo n.º 1
0
        private void ParseFormat(string format)
        {
            _DateInputGroup.Items.Clear();

            if (_ShowCheckBox)
            {
                LockUpdateCheckBox checkBox = new LockUpdateCheckBox();
                _DateInputGroup.Items.Add(checkBox);
                checkBox.CheckedChanged += new EventHandler(LockCheckedChanged);
            }

            if (format.Length == 0) return;

            StringBuilder inputStack = new StringBuilder(format.Length);
            bool quote = false;
            Stack<VisualGroup> groupStack = new Stack<VisualGroup>();
            VisualGroup currentGroup = _DateInputGroup;

            for (int i = 0; i < format.Length; i++)
            {
                if (format[i] == '\'') // Trigger/Exit quote mode
                {
                    if (quote)
                        quote = false;
                    else
                        quote = true;
                    continue;
                }

                if (quote) // Quote mode adds everything under the quotes
                {
                    inputStack.Append(format[i]);
                    continue;
                }

                string s = format.Substring(i, Math.Min(4, format.Length - i));
                bool match = false;
                if (s == "dddd") // The full day-of-week name or three-character day-of-week abbreviation.
                {
                    DayLabelItem dayLabel = new DayLabelItem();
                    currentGroup.Items.Add(dayLabel);
                    i += 3;
                    match = true;
                }
                else if (s == "MMMM") // Full month name
                {
                    MonthNameInput month = new MonthNameInput();
                    currentGroup.Items.Add(month);
                    i += 3;
                    match = true;
                }
                else if (s == "yyyy") // 4 digit year
                {
                    NumericYearInput year = new NumericYearInput();
                    currentGroup.Items.Add(year);
                    i += 3;
                    match = true;
                }

                if (!match)
                {
                    s = format.Substring(i, Math.Min(3, format.Length - i));
                    if (s == "ddd") // The three-character day-of-week abbreviation.
                    {
                        DayLabelItem dayLabel = new DayLabelItem();
                        dayLabel.UseAbbreviatedNames = true;
                        currentGroup.Items.Add(dayLabel);
                        i += 2;
                        match = true;
                    }
                    else if (s == "MMM") // The three-character month abbreviation.
                    {
                        MonthNameInput month = new MonthNameInput();
                        month.UseAbbreviatedNames = true;
                        currentGroup.Items.Add(month);
                        i += 2;
                        match = true;
                    }
                    else if (s == "jjj") // The three-digit day of year...
                    {
                        NumericDayOfYearInput day = new NumericDayOfYearInput();
                        day.DisplayFormat = "000";
                        currentGroup.Items.Add(day);
                        i += 2;
                        match = true;
                    }
                }

                if (!match)
                {
                    s = format.Substring(i, Math.Min(2, format.Length - i));
                    if (s == "dd") // The two-digit day. Single-digit day values are preceded by a 0.
                    {
                        NumericDayInput day = new NumericDayInput();
                        day.DisplayFormat = "00";
                        currentGroup.Items.Add(day);
                        i += 1;
                        match = true;
                    }
                    else if (s == "hh") // The two-digit hour in 12-hour format. Single digit values are preceded by a 0. 
                    {
                        NumericHourInput hour = new NumericHourInput();
                        hour.DisplayFormat = "00";
                        hour.Is24HourFormat = false;
                        currentGroup.Items.Add(hour);
                        i += 1;
                        match = true;
                    }
                    else if (s == "HH") // The two-digit hour in 24-hour format. Single digit values are preceded by a 0.
                    {
                        NumericHourInput hour = new NumericHourInput();
                        hour.DisplayFormat = "00";
                        hour.Is24HourFormat = true;
                        currentGroup.Items.Add(hour);
                        i += 1;
                        match = true;
                    }
                    else if (s == "mm") // The two-digit minute. Single digit values are preceded by a 0. 
                    {
                        NumericMinuteInput minute = new NumericMinuteInput();
                        minute.DisplayFormat = "00";
                        currentGroup.Items.Add(minute);
                        i += 1;
                        match = true;
                    }
                    else if (s == "MM") // The two-digit month number. Single digit values are preceded by a 0. 
                    {
                        NumericMonthInput month = new NumericMonthInput();
                        month.DisplayFormat = "00";
                        currentGroup.Items.Add(month);
                        i += 1;
                        match = true;
                    }
                    else if (s == "ss") // The two-digit seconds. Single digit values are preceded by a 0. 
                    {
                        NumericSecondInput second = new NumericSecondInput();
                        second.DisplayFormat = "00";
                        currentGroup.Items.Add(second);
                        i += 1;
                        match = true;
                    }
                    else if (s == "tt") // The two-letter A.M./P.M. abbreviation (A.M. is displayed as "AM").
                    {
                        HourPeriodInput period = new HourPeriodInput();
                        currentGroup.Items.Add(period);
                        i += 1;
                        match = true;
                    }
                    else if (s == "yy") // The last two digits of the year (2001 is displayed as "01"). 
                    {
                        NumericYearInput year = new NumericYearInput();
                        year.YearDisplayFormat = eYearDisplayFormat.TwoDigit;
                        currentGroup.Items.Add(year);
                        i += 1;
                        match = true;
                    }
                }

                if (!match)
                {
                    s = format[i].ToString();
                    if (s == "d") // The one- or two-digit day. 
                    {
                        NumericDayInput day = new NumericDayInput();
                        currentGroup.Items.Add(day);
                        match = true;
                    }
                    else if (s == "h") // The one- or two-digit hour in 12-hour format.
                    {
                        NumericHourInput hour = new NumericHourInput();
                        hour.Is24HourFormat = false;
                        currentGroup.Items.Add(hour);
                        match = true;
                    }
                    else if (s == "H") //The one- or two-digit hour in 24-hour format. 
                    {
                        NumericHourInput hour = new NumericHourInput();
                        hour.Is24HourFormat = true;
                        currentGroup.Items.Add(hour);
                        match = true;
                    }
                    else if (s == "m") // The one- or two-digit minute. 
                    {
                        NumericMinuteInput minute = new NumericMinuteInput();
                        currentGroup.Items.Add(minute);
                        match = true;
                    }
                    else if (s == "M") // The one- or two-digit month number. 
                    {
                        NumericMonthInput month = new NumericMonthInput();
                        currentGroup.Items.Add(month);
                        match = true;
                    }
                    else if (s == "s") // The one- or two-digit seconds. 
                    {
                        NumericSecondInput second = new NumericSecondInput();
                        currentGroup.Items.Add(second);
                        match = true;
                    }
                    else if (s == "t") // The one-letter A.M./P.M. abbreviation (A.M. is displayed as "A"). 
                    {
                        HourPeriodInput period = new HourPeriodInput();
                        period.UseSingleLetterLabel = true;
                        currentGroup.Items.Add(period);
                        match = true;
                    }
                    else if (s == "y") // The one-digit year (2001 is displayed as "1"). 
                    {
                        NumericYearInput year = new NumericYearInput();
                        year.YearDisplayFormat = eYearDisplayFormat.OneDigit;
                        currentGroup.Items.Add(year);
                        match = true;
                    }
                    else if (s == "j") // The three-digit day of year...
                    {
                        NumericDayOfYearInput day = new NumericDayOfYearInput();
                        currentGroup.Items.Add(day);
                        match = true;
                    }
                    else if (s == "{") // Begins the group of data entries
                    {
                        if (inputStack.Length > 0)
                        {
                            VisualLabel label = new VisualLabel();
                            label.Text = inputStack.ToString();
                            currentGroup.Items.Add(label);
                            inputStack = new StringBuilder(format.Length);
                        }
                        DateTimeGroup group = new DateTimeGroup();
                        currentGroup.Items.Add(group);
                        groupStack.Push(currentGroup);
                        currentGroup = group;
                        match = true;
                    }
                    else if (s == "}") // Ends the group of data entries
                    {
                        currentGroup = groupStack.Pop();
                        match = true;
                    }
                }

                if (match)
                {
                    if (inputStack.Length > 0)
                    {
                        VisualLabel label = new VisualLabel();
                        label.Text = inputStack.ToString();
                        //label.TextPadding = new DevComponents.DotNetBar.Padding(0, 1, 0, 0);
                        currentGroup.Items.Insert(currentGroup.Items.Count - 1, label);
                        inputStack = new StringBuilder(format.Length);
                    }
                }
                else
                    inputStack.Append(format[i]);
            }

            if (inputStack.Length > 0)
            {
                VisualLabel label = new VisualLabel();
                label.Text = inputStack.ToString();
                currentGroup.Items.Add(label);
            }

            if (_ShowUpDown)
            {
                VisualUpDownButton upDownButton = new VisualUpDownButton();
                upDownButton.Alignment = eItemAlignment.Right;
                upDownButton.AutoChange = eUpDownButtonAutoChange.FocusedItem;
                _DateInputGroup.Items.Add(upDownButton);
            }

            RecreateButtons();

            if (_ShowCheckBox)
                this.LockUpdateCheckBox.Checked = _LockUpdateChecked;
        }
Ejemplo n.º 2
0
        protected override VisualItem CreateRootVisual()
        {
            _ButtonClear = new InputButtonSettings(this);
            _ButtonDropDown = new InputButtonSettings(this);
            _ButtonFreeText = new InputButtonSettings(this);

            _DateInputGroup = new DateTimeGroup();
            _DateInputGroup.IsRootVisual = true;
            _DateInputGroup.ValueChanged += new EventHandler(InputGroup_ValueChanged);
            FormatToDateTimeGroup();
            return _DateInputGroup;
        }