private void CreateComboBox(ExtensionTypeParameter parameter) { var labelHeight = 15; var width = 100; UpdateLine(width + ControlDelta_); var label = new Label { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop), Size = new Size(width, labelHeight), Text = parameter.Name + ":", Name = "lbl" + parameter.Name }; var comboBox = new ComboBox { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop + labelHeight), Size = new Size(width, 20), Name = parameter.Name, Tag = parameter }; comboBox.Items.AddRange(Enum.GetNames(parameter.ParameterType)); comboBox.Text = parameter.HasDefaultValue ? parameter.Value.ToString() : Enum.GetNames(parameter.ParameterType)[0]; _groupBox.Controls.Add(label); _groupBox.Controls.Add(comboBox); UpdateWidth(width + ControlDelta_); }
private void CreateTextBox(ExtensionTypeParameter parameter) { var labelHeight = 15; var width = 100; UpdateLine(width + ControlDelta_); var label = new Label { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop), Size = new Size(width, labelHeight), Text = parameter.Name + ":", Name = "lbl" + parameter.Name }; var textBox = new TextBox { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop + labelHeight), Size = new Size(width, 20), Name = parameter.Name, Tag = parameter }; if (parameter.HasDefaultValue) { textBox.Text = parameter.Value.ToString(); } _groupBox.Controls.Add(label); _groupBox.Controls.Add(textBox); UpdateWidth(width + ControlDelta_); }
private Control CreateFileInput(ExtensionTypeParameter parameter) { var buttonCommand = new Command { Tag = parameter }; buttonCommand.Executed += buttonCommand_Click; return(new TableLayout { Rows = { new Label { Text = parameter.Name + ":" }, new StackLayout { Orientation = Orientation.Horizontal, Items = { new TextBox { ReadOnly = true, ID = parameter.Name }, new Button { Text = "...", Command = buttonCommand } } } } }); }
private void CreateCheckBox(ExtensionTypeParameter parameter) { var labelHeight = 15; var width = 100; UpdateLine(width + ControlDelta_); var chk = new CheckBox { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop + labelHeight), Size = new Size(width, 20), Text = parameter.Name, Name = parameter.Name, Tag = parameter, }; if (parameter.HasDefaultValue) { chk.Checked = (bool)parameter.Value; } _groupBox.Controls.Add(chk); UpdateWidth(width + ControlDelta_); }
private Control CreateControl(ExtensionTypeParameter parameter) { if (parameter.IsFile) { return(CreateFileInput(parameter)); } if (parameter.ParameterType.IsEnum) { return(CreateComboBox(parameter)); } switch (Type.GetTypeCode(parameter.ParameterType)) { case TypeCode.Byte: case TypeCode.SByte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: case TypeCode.Single: case TypeCode.Double: case TypeCode.Decimal: case TypeCode.Char: case TypeCode.String: return(CreateTextBox(parameter)); case TypeCode.Boolean: return(CreateCheckBox(parameter)); } throw new InvalidOperationException("The parameter cannot be parsed to a control."); }
private Control CreateComboBox(ExtensionTypeParameter parameter) { var enumNames = Enum.GetNames(parameter.ParameterType).ToList(); var comboBox = new ComboBox { Tag = parameter, DataStore = enumNames }; comboBox.SelectedValueChanged += comboBox_SelectedValueChanged; if (parameter.HasDefaultValue) { comboBox.SelectedIndex = enumNames.ToList().IndexOf(parameter.Value.ToString()); } return(new StackLayout { Orientation = Orientation.Vertical, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { new Label { Text = parameter.Name + ":" }, comboBox } }); }
private Control CreateCheckBox(ExtensionTypeParameter parameter) { var checkBox = new CheckBox { Text = parameter.Name, Checked = parameter.HasDefaultValue && (bool)parameter.Value, Tag = parameter }; checkBox.CheckedChanged += checkBox_CheckedChanged; return(new StackLayout { Orientation = Orientation.Vertical, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { checkBox } }); }
public void AddParameter(ExtensionTypeParameter parameter) { if (parameter.IsFile) { CreateFileInput(parameter); return; } if (parameter.ParameterType.IsEnum) { CreateComboBox(parameter); return; } switch (Type.GetTypeCode(parameter.ParameterType)) { case TypeCode.Byte: case TypeCode.SByte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: case TypeCode.Single: case TypeCode.Double: case TypeCode.Decimal: case TypeCode.Char: case TypeCode.String: CreateTextBox(parameter); break; case TypeCode.Boolean: CreateCheckBox(parameter); break; } }
private void CreateFileInput(ExtensionTypeParameter parameter) { var labelHeight = 15; var width = 100; UpdateLine(width + ControlDelta_); var label = new Label { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop), Size = new Size(width, labelHeight), Text = parameter.Name + ":", Name = "lbl" + parameter.Name }; var textBox = new TextBox { Location = new Point(_topLeftCorner.X + _paddingLeft, _topLeftCorner.Y + _paddingTop + labelHeight), Size = new Size(width - 30, 20), Name = parameter.Name, ReadOnly = true }; var button = new Button { Location = new Point(_topLeftCorner.X + _paddingLeft + textBox.Size.Width + 5, _topLeftCorner.Y + _paddingTop + labelHeight), Size = new Size(25, 20), Name = "btn" + parameter.Name, Text = "..." }; button.Click += Button_Click; _groupBox.Controls.Add(label); _groupBox.Controls.Add(textBox); _groupBox.Controls.Add(button); UpdateWidth(width + ControlDelta_); }
private Control CreateTextBox(ExtensionTypeParameter parameter) { var textBox = new TextBox { Text = parameter.HasDefaultValue ? parameter.Value.ToString() : string.Empty, Tag = parameter }; textBox.TextChanged += textBox_TextChanged; return(new StackLayout { Orientation = Orientation.Vertical, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { new Label { Text = parameter.Name + ":" }, textBox } }); }
public static bool TryParse(this ExtensionTypeParameter parameter, Control control, out string error) { error = ""; // If type is a file if (parameter.IsFile) { var fileTextBox = control as TextBox; if (string.IsNullOrEmpty(fileTextBox.Text)) { error = $"Parameter '{parameter.Name}' is empty."; return(false); } parameter.Value = fileTextBox.Text; return(true); } // If type is an enum if (parameter.ParameterType.IsEnum) { var enumName = ((ComboBox)control).SelectedText; if (!Enum.IsDefined(parameter.ParameterType, enumName)) { error = $"'{enumName}' is no valid member of parameter '{parameter.Name}'."; return(false); } parameter.Value = Enum.Parse(parameter.ParameterType, enumName); return(true); } // If type is a boolean if (parameter.ParameterType == typeof(bool)) { parameter.Value = ((CheckBox)control).Checked; return(true); } // If type is text based var textBox = (TextBox)control; if (string.IsNullOrEmpty(textBox.Text)) { error = $"Parameter '{parameter.Name}' is empty."; return(false); } if (parameter.ParameterType == typeof(char)) { if (!char.TryParse(textBox.Text, out var result)) { error = $"'{textBox.Text}' in parameter '{parameter.Name}' is no valid character."; return(false); } parameter.Value = result; return(true); } if (parameter.ParameterType == typeof(string)) { parameter.Value = textBox.Text; return(true); } if (!TryParseNumber(parameter.ParameterType, textBox.Text, out var value)) { error = $"'{textBox.Text}' in parameter '{parameter.Name}' is no valid '{parameter.ParameterType.Name}'."; return(false); } parameter.Value = value; return(true); }