[10589] | 1 | using System;
|
---|
| 2 | using System.Collections.Generic;
|
---|
| 3 | using System.Linq;
|
---|
| 4 | using System.Windows.Forms;
|
---|
[10712] | 5 | using HeuristicLab.Collections;
|
---|
| 6 | using HeuristicLab.Core;
|
---|
[10589] | 7 | using HeuristicLab.Core.Views;
|
---|
[10712] | 8 | using HeuristicLab.Data;
|
---|
| 9 | using HeuristicLab.DataPreprocessing.Filter;
|
---|
[10589] | 10 | using HeuristicLab.MainForm;
|
---|
| 11 |
|
---|
[10712] | 12 | namespace 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 | }
|
---|