private void ResetForm()
 {
     _selectedPredefinedCondition = null;
     TextBoxCaption.Text          = string.Empty;
     TextBoxCondition.Text        = string.Empty;
     CheckBoxIsNeedEdit.Checked   = false;
     CheckComboBoxDbTypes.ClearCheckedItems();
 }
        public void LoadUserConditions(IQueryView queryView)
        {
            ListBoxConditions.Items.Clear();

            _selectedPredefinedCondition = null;

            if (_queryView == null)
            {
                _queryView = queryView;
            }

            if (_queryView == null)
            {
                return;
            }

            foreach (var expression in _queryView.UserPredefinedConditions)
            {
                ListBoxConditions.Items.Add(new UserConditionVisualItem(expression));
            }
        }
        private void UpdateForm()
        {
            var enable = ListBoxConditions.SelectedItem is UserConditionVisualItem;

            buttonCopy.Enabled     = enable;
            buttonDelete.Enabled   = enable;
            buttonMoveUp.Enabled   = enable;
            buttonMoveDown.Enabled = enable;

            for (var i = 0; i < CheckComboBoxDbTypes.Items.Count; i++)
            {
                CheckComboBoxDbTypes.SetItemChecked(i, false);
            }

            if (!enable)
            {
                return;
            }

            _selectedPredefinedCondition = (UserConditionVisualItem)ListBoxConditions.SelectedItem;

            if (_selectedPredefinedCondition == null)
            {
                return;
            }

            TextBoxCaption.Text        = _selectedPredefinedCondition.Caption;
            TextBoxCondition.Text      = _selectedPredefinedCondition.Condition;
            CheckBoxIsNeedEdit.Checked = _selectedPredefinedCondition.IsNeedEdit;

            foreach (var item in _selectedPredefinedCondition.ShowOnlyForDbTypes.Select(type => CheckComboBoxDbTypes.Items
                                                                                        .OfType <DbType>().First(x =>
                                                                                                                 x == type)))
            {
                CheckComboBoxDbTypes.SetItemChecked(CheckComboBoxDbTypes.Items.OfType <DbType>().ToList().IndexOf(item),
                                                    true);
            }

            buttonSave.Enabled = false;
        }
        private void buttonCopy_Click(object sender, EventArgs e)
        {
            _selectedPredefinedCondition = ListBoxConditions.SelectedItem as UserConditionVisualItem;

            if (_selectedPredefinedCondition == null)
            {
                return;
            }

            var name = _selectedPredefinedCondition.Caption;

            var newName = "";

            if (ListBoxConditions.Items.OfType <UserConditionVisualItem>().All(x =>
                                                                               string.Compare(x.Caption, $"{name} Copy", StringComparison.InvariantCultureIgnoreCase) != 0))
            {
                newName = $"{name} Copy";
            }
            else
            {
                for (var i = 1; i < 1000; i++)
                {
                    if (ListBoxConditions.Items.OfType <UserConditionVisualItem>().Any(x => string.Compare(x.Caption, $"{name} Copy ({i})", StringComparison.InvariantCultureIgnoreCase) == 0))
                    {
                        continue;
                    }

                    newName = $"{name} Copy ({i})";
                    break;
                }
            }

            var newCopy = _selectedPredefinedCondition.Copy(newName);
            var index   = ListBoxConditions.Items.IndexOf(_selectedPredefinedCondition);

            _queryView.UserPredefinedConditions.Insert(index + 1, newCopy.PredefinedCondition);

            LoadUserConditions(null);
            ListBoxConditions.SelectedIndex = index + 1;
        }