Example #1
0
        private static ParameterValueEditor EditorWithoutSelect(ParameterInfo parameterInfo)
        {
            // Ручной ввод одного значения

            var parameterValueControl = EditorFactory.CreateSimpleEditor(parameterInfo.Type);

            var editor = new ParameterValueEditor(parameterValueControl)
            {
                ShowNullButton   = parameterInfo.AllowNullValue,
                ShowSelectButton = false
            };

            editor.ChangingValue += (sender, args) => { args.Value = ValueOrFirstItem(args.Value); };

            return(editor);
        }
Example #2
0
        private static ParameterValueEditor EditorWithManualMultipleSelect(ParameterInfo parameterInfo)
        {
            // Выбор нескольких значений из вручную сформированного списка

            var parameterValueControl = EditorFactory.CreateArrayEditor(parameterInfo.Type);
            var parameterValueEditor  = EditorFactory.CreateSimpleEditor(parameterInfo.Type);
            var selectValueView       = new SelectMultipleValueView(parameterValueEditor);
            var selectValueDlg        = new DialogView <SelectMultipleValueView>(selectValueView);

            var editor = new ParameterValueEditor(parameterValueControl)
            {
                ShowNullButton   = false,
                ShowSelectButton = true
            };

            editor.ChangingValue += (sender, args) =>
            {
                args.Value = parameterValueControl.CastArrayValue(args.Value as IEnumerable);
                args.Label = parameterValueControl.FormatArrayValue(args.Value as IEnumerable);
            };

            editor.SelectValue += (sender, args) =>
            {
                args.Cancel = true;

                selectValueDlg.View.SelectedValues = editor.Value as IEnumerable;

                if (selectValueDlg.ShowDialog() == DialogResult.OK)
                {
                    args.Value  = selectValueDlg.View.SelectedValues;
                    args.Cancel = false;
                }
            };

            return(editor);
        }
Example #3
0
        private static ParameterValueEditor EditorWithSingleSelect(ParameterInfo parameterInfo)
        {
            // Выбор одного значения из предопределенного списка

            var parameterValueControl = EditorFactory.CreateObjectEditor(parameterInfo.Type);
            var selectValueDlg        = new DialogView <SelectSingleValueView>();

            var editor = new ParameterValueEditor(parameterValueControl)
            {
                ShowNullButton   = false,
                ShowSelectButton = true
            };

            editor.ChangingValue += (sender, args) =>
            {
                // Устанавливаем значение, только если оно есть в списке

                object newValue = null;
                string newLabel = null;

                if (editor.AvailableValues.IsNullOrEmpty() == false)
                {
                    var selectedValue = parameterValueControl.CastObjectValue(ValueOrFirstItem(args.Value));

                    if (selectedValue != null)
                    {
                        foreach (var item in editor.AvailableValues)
                        {
                            if (Equals(item.Value, selectedValue))
                            {
                                newValue = item.Value;
                                newLabel = item.Key;
                                break;
                            }
                        }
                    }
                }

                args.Value = newValue;
                args.Label = newLabel;
            };

            editor.SelectValue += (sender, args) =>
            {
                // Показываем диалог, только если есть доступные значения

                args.Cancel = true;

                if (editor.AvailableValues.IsNullOrEmpty() == false)
                {
                    selectValueDlg.View.AvailableValues = editor.AvailableValues;
                    selectValueDlg.View.SelectedValue   = editor.Value;

                    if (selectValueDlg.ShowDialog() == DialogResult.OK)
                    {
                        args.Value  = selectValueDlg.View.SelectedValue;
                        args.Cancel = false;
                    }
                }
            };

            return(editor);
        }
Example #4
0
        private static ParameterValueEditor EditorWithMultipleSelect(ParameterInfo parameterInfo)
        {
            // Выбор нескольких значений из предопределенного списка

            var parameterValueControl = EditorFactory.CreateArrayEditor(parameterInfo.Type);
            var selectValueDlg        = new DialogView <SelectMultipleValueView>();

            var editor = new ParameterValueEditor(parameterValueControl)
            {
                ShowNullButton   = false,
                ShowSelectButton = true
            };

            editor.ChangingValue += (sender, args) =>
            {
                // Выбираем значения, только если они есть в списке

                object newValue = null;
                string newLabel = null;

                if (editor.AvailableValues.IsNullOrEmpty() == false)
                {
                    var selectedValues = parameterValueControl.CastArrayValue(args.Value as IEnumerable);

                    if (selectedValues != null)
                    {
                        var allowSelectedValues = new List <object>();
                        var allowSelectedLabels = new List <string>();

                        foreach (var value in selectedValues)
                        {
                            foreach (var item in editor.AvailableValues)
                            {
                                if (Equals(item.Value, value))
                                {
                                    allowSelectedValues.Add(item.Value);
                                    allowSelectedLabels.Add(item.Key);
                                    break;
                                }
                            }
                        }

                        if (allowSelectedValues.Count > 0)
                        {
                            newValue = allowSelectedValues;
                            newLabel = parameterValueControl.FormatArrayValue(allowSelectedLabels, false);
                        }
                    }
                }

                args.Value = newValue;
                args.Label = newLabel;
            };

            editor.SelectValue += (sender, args) =>
            {
                // Показываем диалог, только если есть доступные значения

                args.Cancel = true;

                if (editor.AvailableValues.IsNullOrEmpty() == false)
                {
                    selectValueDlg.View.AvailableValues = editor.AvailableValues;
                    selectValueDlg.View.SelectedValues  = editor.Value as IEnumerable;

                    if (selectValueDlg.ShowDialog() == DialogResult.OK)
                    {
                        args.Value  = selectValueDlg.View.SelectedValues;
                        args.Cancel = false;
                    }
                }
            };

            return(editor);
        }