private void ProcessItemSelection(object sender)
        {
            ColumnFilterItem filterValue = (ColumnFilterItem)((PopupForm)sender).SelectedFilterItem;

            if (filterValue == null)
            {
                return;
            }

            if (filterValue is ColumnFilterCustomItem && filterShowingColumn != null)
            {
                CustomFilterForm frm = CreateCustomFilterForm();
                PopuplateFilterConditions(frm);

                if (frm.ShowDialog() == DialogResult.OK)
                {
                    filterValue = GetCustomFilterValue(frm);
                    AddSingleFilterCondition(frm.cbeFilterConditions.Text, filterValue);
                }
            }
            else if (!filterValue.IsEmpty && filterShowingColumn != null)
            {
                AddSingleFilterCondition("Equals", filterValue);
            }

            filterShowingColumn = null;
        }
        private void AddSingleFilterCondition(string filterConditionString, ColumnFilterItem filterValue)
        {
            OwnerTreeList.FilteredVisibleNodes.Clear();

            FilterConditionEnum   condition;
            ColumnFilterCondition newCondition;

            if (filterValue is ColumnFilterBlanksItem)
            {
                newCondition = new ColumnFilterCondition(filterShowingColumn.FieldName, FilterConditionEnum.IsBlank, null, null);
            }
            else if (filterValue is ColumnFilterNonBlanksItem)
            {
                newCondition = new ColumnFilterCondition(filterShowingColumn.FieldName, FilterConditionEnum.IsNotBlank, null, null);
            }
            else
            {
                condition    = (FilterConditionEnum)Enum.Parse(typeof(FilterConditionEnum), filterConditionString);
                newCondition = new ColumnFilterCondition(filterShowingColumn.FieldName, condition, filterValue.Value, filterValue.DisplayText);
            }

            for (int i = 0; i < OwnerTreeList.ColumnFilterConditions.Count; i++)
            {
                if (OwnerTreeList.ColumnFilterConditions[i].Column == filterShowingColumn)
                {
                    OwnerTreeList.ColumnFilterConditions.RemoveAt(i);
                    break;
                }
            }

            if (!(filterValue is ColumnFilterAllItem))
            {
                OwnerTreeList.ColumnFilterConditions.Add(newCondition);
            }
        }
        public override bool Equals(object obj)
        {
            if (!(obj is ColumnFilterItem))
            {
                return(base.Equals(obj));
            }

            ColumnFilterItem item = (ColumnFilterItem)obj;

            return(Object.Equals(this.Value, item.Value) && this.DisplayText == item.DisplayText);
        }
        protected virtual ColumnFilterItem GetCustomFilterValue(CustomFilterForm frm)
        {
            ColumnFilterItem filterValue;

            try
            {
                filterValue = new ColumnFilterItem(Convert.ChangeType(frm.teValue.EditValue, filterShowingColumn.ColumnType), frm.teValue.Text);
            } catch
            {
                filterValue = new ColumnFilterItem(frm.teValue.Text, frm.teValue.Text);
            }

            return(filterValue);
        }
        private static void RemoveColumnDataDuplicates(List <ColumnFilterItem> columnValuesList)
        {
            ColumnFilterItem item = columnValuesList[0];
            int sameIndex         = 0;
            int sameCount         = 0;
            int i = 1;

            while (i < columnValuesList.Count)
            {
                if (columnValuesList[i] == item)
                {
                    sameCount++;
                    i++;
                }
                else
                {
                    if (sameCount > 0)
                    {
                        columnValuesList.RemoveRange(sameIndex, sameCount);
                        i         = i - sameCount;
                        sameCount = 0;
                        sameIndex = i;
                        item      = columnValuesList[i];
                        i++;
                    }
                    else
                    {
                        sameIndex = i;
                        item      = columnValuesList[i];
                        i++;
                    }
                }
            }

            if (sameCount > 0)
            {
                columnValuesList.RemoveRange(sameIndex, sameCount);
            }
        }
 private void filterItemsList_SelectedIndexChanged(object sender, EventArgs e)
 {
     selectedFilterItem = (ColumnFilterItem)filterItemsList.SelectedItem;
     popupFormClosing   = true;
     this.Close();
 }
 private static bool IsFilterItemValueEmpty(ColumnFilterItem value)
 {
     return(value.IsEmpty);
 }