using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using Inet.Viewer.Data; using Inet.Viewer.Resources; using System.Threading; namespace Inet.Viewer.WinForms.Prompt { /// /// A panel for a time range prompt field. /// public partial class TimeRangePromptField : PromptControl { /// /// Creates the panel. /// /// prompt field this panel is based one /// validation delegate for checking prompt values /// flag indicating the no value checkbox should be hidden public TimeRangePromptField(PromptData promptData, ValidationDelegate validationDelegate, bool hideNoValue) { this.PromptData = promptData; InitializeComponent(); timePickerFrom.ValueChanged += HandleChanged; timePickerTo.ValueChanged += HandleChanged; if (promptData.MinValue != null || hideNoValue) { chbNoValue.Visible = false; } List defaultValues = promptData.DefaultValues.Cast(). Where(v => !(v is RangePromptValue)). Select(v => TimePromptField.ToDateTime((TimeSpan)v.Value)).ToList(); timePickerFrom.DefaultValues = timePickerTo.DefaultValues = defaultValues; timePickerFrom.CustomFormat = timePickerTo.CustomFormat = Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern; timePickerFrom.ShowUpDown = timePickerTo.ShowUpDown = true; timePickerFrom.DefaultsOnly = timePickerTo.DefaultsOnly = !promptData.Changeable; Value = promptData.Values; chbNoValue.Text = strings.Prompt_None_Long; ErrorProvider = new ErrorProvider(this); ControlForErrors = chbNoValue.Visible ? (Control)this.chbNoValue : (Control)this.timePickerTo; } /// /// Returns the chosen value for this panel. Never null: if null value, will return null wrapped in a SinglePromptValue. /// internal override PromptValue Value { get { RangePromptValue r = new RangePromptValue(PromptData.Time); r.Description = ""; r.IncludeHigh = false; r.IncludeLow = true; r.OnlyDescription = true; r.StartValue = new SinglePromptValue(TimePromptField.ToTimeSpan(timePickerFrom.Value), null, PromptData.Time); r.EndValue = new SinglePromptValue(TimePromptField.ToTimeSpan(timePickerTo.Value), null, PromptData.Time); return r; } set { if (value != null && value.Value is RangePromptValue) { this.timePickerFrom.Value = TimePromptField.ToDateTime((TimeSpan)((RangePromptValue)value.Value).StartValue.Value); this.timePickerTo.Value = TimePromptField.ToDateTime((TimeSpan)((RangePromptValue)value.Value).EndValue.Value); } else { this.chbNoValue.Checked = true; } } } } }