Free cookie consent management tool by TermsFeed Policy Generator

source: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs @ 10785

Last change on this file since 10785 was 10785, checked in by psteiner, 10 years ago

filter or combination
filter control: checkedlistview

File size: 3.5 KB
RevLine 
[10589]1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Windows.Forms;
[10712]5using HeuristicLab.Collections;
6using HeuristicLab.Core;
[10589]7using HeuristicLab.Core.Views;
[10712]8using HeuristicLab.Data;
9using HeuristicLab.DataPreprocessing.Filter;
[10589]10using HeuristicLab.MainForm;
11
[10712]12namespace HeuristicLab.DataPreprocessing.Views {
[10589]13  [View("CheckedFilterCollection View")]
[10712]14  [Content(typeof(FilterContent), true)]
15  public partial class FilterView : ItemView {
[10785]16    //private CheckedItemCollectionView<IFilter> filterView;
[10589]17
[10712]18    public FilterView() {
[10589]19      InitializeComponent();
[10637]20      tbTotal.Text = "0";
21      tbFiltered.Text = "0";
22      tbPercentage.Text = "0%";
[10785]23      checkedFilterView.Content = new CheckedItemCollection<IFilter>();
24      //filterView = new CheckedItemCollectionView<IFilter>();
25      //filterView = new CheckedFilterCollectionView();
26      /*filterView.Dock = DockStyle.Fill;
[10589]27      filterView.Content = new CheckedItemCollection<IFilter>();
[10785]28       * */
29      checkedFilterView.Content.ItemsAdded += Content_ItemsAdded;
30      checkedFilterView.Content.ItemsRemoved += Content_ItemsRemoved;
31      checkedFilterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
32      //groupBoxFilter.Controls.Add(filterView);*/
[10589]33    }
34
[10712]35    public new FilterContent Content {
[10589]36      get { return (FilterContent)base.Content; }
[10785]37      set { base.Content = value; UpdateFilterInfo(); }
[10589]38    }
39
[10712]40    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
[10713]41     
42      foreach (IFilter filter in e.Items)
43      {
[10707]44        filter.Active = !filter.Active;
[10637]45      }
[10693]46      UpdateFilterInfo();
47      Refresh();
48      ResumeRepaint(true);
49    }
50
[10712]51    private void UpdateFilterInfo() {
[10785]52      List<IFilter> filters = checkedFilterView.ItemCollection.ToList<IFilter>();
[10696]53
54      int activeFilters = filters.Count(c => c.Active);
55
56      applyFilterButton.Enabled = (activeFilters > 0);
[10785]57      rBtnAnd.Enabled = (activeFilters > 0);
58      rBtnOr.Enabled = (activeFilters > 0);
59      btnReset.Enabled = (activeFilters > 0);
[10696]60
[10785]61      bool[] result = Content.FilterLogic.Preview(filters, rBtnAnd.Checked);
[10713]62     
[10785]63      int filteredCnt = result.Count(c => c);
[10713]64 
[10693]65      tbFiltered.Text = filteredCnt.ToString();
66      double percentage = filteredCnt * 100 / result.Length;
67      tbPercentage.Text = percentage.ToString() + "%";
68      tbTotal.Text = result.Length.ToString();
[10589]69    }
70
[10712]71    private void applyFilterButton_Click(object sender, EventArgs e) {
[10785]72      List<IFilter> filters = checkedFilterView.ItemCollection.ToList<IFilter>();
73      Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
[10589]74    }
75
[10637]76    //whenever a new filter is added the preprocessing data is set to the filter
[10712]77    private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
78      foreach (IFilter filter in e.Items) {
[10637]79        filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
[10693]80        filter.Active = true;
[10785]81        checkedFilterView.Content.SetItemCheckedState(filter, false);
[10637]82      }
[10693]83      UpdateFilterInfo();
[10637]84    }
85
[10712]86    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
[10693]87      UpdateFilterInfo();
88    }
89
[10785]90    private void rBtnAnd_CheckedChanged(object sender, EventArgs e)
91    {
92      UpdateFilterInfo();
93    }
94
95    private void btnReset_Click(object sender, EventArgs e)
96    {
97      Content.FilterLogic.Reset();
98    }
99
[10589]100  }
101}
Note: See TracBrowser for help on using the repository browser.