示例#1
0
        private void RevertNumericParameterValue(ParameterValueBuffer parameterValueBuffer)
        {
            TextBox parameterTextBox = parameterValueBuffer.Control as TextBox;

            parameterValueBuffer.NewValue = parameterValueBuffer.Parameter.GetValue();
            parameterTextBox.Text         = parameterValueBuffer.NewValue.ToString();
        }
示例#2
0
        private void RevertEnumParameterValue(ParameterValueBuffer parameterValueBuffer)
        {
            ComboBox parameterComboBox = parameterValueBuffer.Control as ComboBox;

            parameterValueBuffer.NewValue  = parameterValueBuffer.Parameter.GetValue();
            parameterComboBox.SelectedItem = parameterValueBuffer.NewValue.ToString();
        }
示例#3
0
        private void RevertBoolParameterValue(ParameterValueBuffer parameterValueBuffer)
        {
            CheckBox parameterCheckBox = parameterValueBuffer.Control as CheckBox;

            parameterValueBuffer.NewValue = parameterValueBuffer.Parameter.GetValue();
            parameterCheckBox.Checked     = (bool)parameterValueBuffer.NewValue;
        }
示例#4
0
        private void StringParameterEditButtonClick(object sender, EventArgs e)
        {
            ParameterValueBuffer parameterValueBuffer = (ParameterValueBuffer)((Button)sender).Tag;

            new StringParameterValueEditingWindow(parameterValueBuffer).ShowDialog();

            RaiseParameterValueEdited();
        }
示例#5
0
        private Control AddBoolParameterControls(ParameterValueBuffer parameterValueBuffer)
        {
            CheckBox parameterCheckBox = new CheckBox();

            parameterCheckBox.Tag             = parameterValueBuffer;
            parameterCheckBox.CheckedChanged += new EventHandler(BoolParameterChanged);
            return(parameterCheckBox);
        }
示例#6
0
        private void StringParameterChanged(object sender, EventArgs e)
        {
            TextBox parameterTextBox = (TextBox)sender;
            ParameterValueBuffer parameterValueBuffer = (ParameterValueBuffer)parameterTextBox.Tag;

            parameterValueBuffer.NewValue = parameterTextBox.Text;

            RaiseParameterValueEdited();
        }
示例#7
0
        private void BoolParameterChanged(object sender, EventArgs e)
        {
            CheckBox             parameterCheckBox    = (CheckBox)sender;
            ParameterValueBuffer parameterValueBuffer = (ParameterValueBuffer)parameterCheckBox.Tag;

            parameterValueBuffer.NewValue = parameterCheckBox.Checked;

            RaiseParameterValueEdited();
        }
示例#8
0
        private void EnumParameterValueChanged(object sender, EventArgs e)
        {
            ComboBox             parameterComboBox    = (ComboBox)sender;
            ParameterValueBuffer parameterValueBuffer = (ParameterValueBuffer)parameterComboBox.Tag;

            parameterValueBuffer.NewValue = (Enum)(Enum.Parse(parameterValueBuffer.Parameter.FieldType, parameterComboBox.SelectedItem.ToString()));

            RaiseParameterValueEdited();
        }
示例#9
0
        private Control AddEnumParameterControls(ParameterValueBuffer parameterValueBuffer)
        {
            ComboBox parameterValueComboBox = new ComboBox();

            parameterValueComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            parameterValueComboBox.Tag           = parameterValueBuffer;
            parameterValueComboBox.Items.AddRange(parameterValueBuffer.Parameter.FieldType.GetEnumNames());
            parameterValueComboBox.SelectedIndexChanged += new EventHandler(EnumParameterValueChanged);
            return(parameterValueComboBox);
        }
示例#10
0
        private void NumericParameterValidating(object sender, CancelEventArgs e)
        {
            TextBox parameterTextBox = (TextBox)sender;
            ParameterValueBuffer parameterValueBuffer = (ParameterValueBuffer)parameterTextBox.Tag;
            string stringValue = parameterTextBox.Text;

            var converter = TypeDescriptor.GetConverter(parameterValueBuffer.Parameter.FieldType);

            object value;

            try
            {
                value = converter.ConvertFromString(parameterTextBox.Text);
            }
            catch (Exception)
            {
                errorProvider.SetError(parameterTextBox, "Incorrect " + parameterValueBuffer.Parameter.TypeDescription);
                e.Cancel = true;
                return;
            }

            if (parameterValueBuffer.Parameter.MinimumValue != null && parameterValueBuffer.Parameter.MaximumValue != null)
            {
                if (((IComparable)value).CompareTo(parameterValueBuffer.Parameter.MinimumValue) < 0 ||
                    ((IComparable)value).CompareTo(parameterValueBuffer.Parameter.MaximumValue) > 0)
                {
                    errorProvider.SetError(parameterTextBox, "Value between '" + parameterValueBuffer.Parameter.MinimumValue + "' and '" + parameterValueBuffer.Parameter.MaximumValue + "' expected");
                    e.Cancel = true;
                    return;
                }
            }
            else if (parameterValueBuffer.Parameter.MinimumValue != null)
            {
                if (((IComparable)value).CompareTo(parameterValueBuffer.Parameter.MinimumValue) < 0)
                {
                    errorProvider.SetError(parameterTextBox, "Value greater than '" + parameterValueBuffer.Parameter.MinimumValue + "' expected");
                    e.Cancel = true;
                    return;
                }
            }
            else if (parameterValueBuffer.Parameter.MaximumValue != null)
            {
                if (((IComparable)value).CompareTo(parameterValueBuffer.Parameter.MaximumValue) > 0)
                {
                    errorProvider.SetError(parameterTextBox, "Value less than '" + parameterValueBuffer.Parameter.MaximumValue + "' expected");
                    e.Cancel = true;
                    return;
                }
            }

            errorProvider.SetError(parameterTextBox, null);

            parameterValueBuffer.NewValue = value;
        }
示例#11
0
        private Control AddNumericParameterControls(ParameterValueBuffer parameterValueBuffer)
        {
            TextBox parameterTextBox = new TextBox();

            parameterTextBox.CausesValidation = true;
            parameterTextBox.Tag          = parameterValueBuffer;
            parameterTextBox.TextChanged += new EventHandler(NumericParameterEdited);
            parameterTextBox.Validating  += new CancelEventHandler(NumericParameterValidating);

            return(parameterTextBox);
        }
示例#12
0
        private void RevertStringParameterValue(ParameterValueBuffer parameterValueBuffer)
        {
            parameterValueBuffer.NewValue = parameterValueBuffer.Parameter.GetValue();

            if (parameterValueBuffer.Parameter.StringType != StringParameterType.Multiline)
            {
                TextBox parameterTextBox = parameterValueBuffer.Control as TextBox;

                parameterTextBox.Text = (string)parameterValueBuffer.NewValue;
            }
        }
示例#13
0
        private Control AddStringParameterControls(ParameterValueBuffer parameterValueBuffer)
        {
            if (parameterValueBuffer.Parameter.StringType == StringParameterType.Multiline)
            {
                Button editParameterButton = new Button();
                editParameterButton.Tag      = parameterValueBuffer;
                editParameterButton.AutoSize = true;
                editParameterButton.Text     = "Edit";
                editParameterButton.Click   += new EventHandler(StringParameterEditButtonClick);
                return(editParameterButton);
            }

            TextBox parameterTextBox = new TextBox();

            parameterTextBox.Tag          = parameterValueBuffer;
            parameterTextBox.TextChanged += new EventHandler(StringParameterChanged);
            return(parameterTextBox);
        }
示例#14
0
        private void AddParameterControl(Parameter parameter, Panel container)
        {
            ParameterValueBuffer parameterValueBuffer = new ParameterValueBuffer()
            {
                Parameter = parameter,
                Control   = null,
                NewValue  = parameter.GetValue()
            };

            Control parameterControl = null;

            if (parameter.IsNumeric)
            {
                parameterControl = AddNumericParameterControls(parameterValueBuffer);
            }
            else if (parameter.IsBoolean)
            {
                parameterControl = AddBoolParameterControls(parameterValueBuffer);
            }
            else if (parameter.IsString)
            {
                parameterControl = AddStringParameterControls(parameterValueBuffer);
            }
            else if (parameter.IsEnum)
            {
                parameterControl = AddEnumParameterControls(parameterValueBuffer);
            }
            else
            {
                throw new InvalidOperationException();
            }

            parameterControl.Margin = new Padding(0, 0, 15, 0);

            container.Controls.Add(parameterControl);

            parameterValueBuffer.Control = parameterControl;

            this.inhibitEvents = true;
            RevertParameterValue(parameterValueBuffer);
            this.inhibitEvents = false;
        }
示例#15
0
        private void RevertParameterValue(ParameterValueBuffer parameterValueBuffer)
        {
            Parameter parameter = parameterValueBuffer.Parameter;

            if (parameter.IsNumeric)
            {
                RevertNumericParameterValue(parameterValueBuffer);
            }
            else if (parameter.IsBoolean)
            {
                RevertBoolParameterValue(parameterValueBuffer);
            }
            else if (parameter.IsString)
            {
                RevertStringParameterValue(parameterValueBuffer);
            }
            else if (parameter.IsEnum)
            {
                RevertEnumParameterValue(parameterValueBuffer);
            }
        }
示例#16
0
        private IEnumerable <ParameterValueBuffer> GetParameters(Control control)
        {
            List <ParameterValueBuffer> result = new List <ParameterValueBuffer>();

            foreach (Control innerControl in control.Controls)
            {
                ParameterValueBuffer parameterValueBuffer = innerControl.Tag as ParameterValueBuffer;

                if (parameterValueBuffer != null)
                {
                    result.Add(parameterValueBuffer);
                }

                if (innerControl is ParameterControl)
                {
                    continue;
                }

                result.AddRange(GetParameters(innerControl));
            }

            return(result);
        }
 public StringParameterValueEditingWindow(ParameterValueBuffer parameterValueBuffer)
 {
     this.InitializeComponent();
     this.parameterValueTextBox.Text = (string)parameterValueBuffer.NewValue;
     this.parameterValueBuffer       = parameterValueBuffer;
 }