Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs @ 16787

Last change on this file since 16787 was 16787, checked in by chaider, 5 years ago

#2971 Fixed isChecked events

File size: 3.4 KB
Line 
1using System;
2using System.Collections.Generic;
3using HeuristicLab.Collections;
4using HeuristicLab.Core;
5using HeuristicLab.MainForm;
6using HeuristicLab.MainForm.WindowsForms;
7
8namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
9  [View("ParsedConstraint View")]
10  [Content(typeof(ParsedConstraint), true)]
11  public partial class ParsedConstraintView : AsynchronousContentView {
12    private CheckedItemList<IntervalConstraint> intervalConstraints;
13    public new ParsedConstraint Content {
14      get => (ParsedConstraint)base.Content;
15      set => base.Content = value;
16    }
17
18    public ParsedConstraintView() {
19      InitializeComponent();
20      errorOutput.Text = "";
21      intervalConstraints = new CheckedItemList<IntervalConstraint>();
22      intervalConstraints.CheckedItemsChanged += constraint_CheckedItemChanged;
23    }
24
25    protected override void OnContentChanged() {
26      base.OnContentChanged();
27      UpdateControl();
28    }
29
30    private IEnumerable<IntervalConstraint> ParseConstraints(string input) {
31      return IntervalConstraintsParser.ParseInput(input, Content.ProblemData.TargetVariable,
32        Content.ProblemData.AllowedInputVariables);
33    }
34
35    private void parseBtn_Click(object sender, EventArgs e) {
36      if (constraintsInput.Text != null) {
37        ClearConstraints();
38        var parsedConstraints = ParseConstraints(constraintsInput.Text);
39        foreach (var constraint in parsedConstraints) {
40          constraint.Changed += constraint_Changed;
41          intervalConstraints.Add(constraint, constraint.IsChecked);
42        }
43        constraintsOutput.Content = intervalConstraints;
44        Content.Constraints = intervalConstraints;
45        Content.Input = constraintsInput.Text;
46        errorOutput.Text = "";
47      } else {
48        errorOutput.Text = "No constraints were found!";
49      }
50    }
51
52    private void UpdateControl() {
53      if (Content == null) {
54        ClearConstraints();
55        constraintsOutput.Content = intervalConstraints.AsReadOnly();
56      } else {
57        ClearConstraints();
58        constraintsInput.Text = Content.Input;
59        foreach (var constraint in Content.Constraints) {
60          constraint.Changed += constraint_Changed;
61          intervalConstraints.Add(constraint, constraint.IsChecked);
62        }
63
64        constraintsOutput.Content = intervalConstraints.AsReadOnly();
65      }
66      SetEnabledStateOfControls();
67    }
68
69    private void constraint_Changed(object sender, EventArgs e) {
70      var constraint = (IntervalConstraint) sender;
71      intervalConstraints.SetItemCheckedState(constraint, constraint.IsChecked);
72    }
73
74    private void constraint_CheckedItemChanged(object sender,
75      CollectionItemsChangedEventArgs<IndexedItem<IntervalConstraint>> e) {
76      ICheckedItemList<IntervalConstraint> checkedItemList = (ICheckedItemList<IntervalConstraint>) sender;
77      foreach (var indexedItem in e.Items) {
78        indexedItem.Value.IsChecked = checkedItemList.ItemChecked(indexedItem.Value);
79      }
80    }
81
82    private void constraintsInput_TextChanged(object sender, EventArgs e) {
83      errorOutput.Text = "Unparsed changes! Press parse button to save changes.";
84    }
85
86    private void ClearConstraints() {
87      foreach (var constraint in intervalConstraints) {
88        constraint.Changed -= constraint_Changed;
89      }
90      intervalConstraints.Clear();
91    }
92
93  }
94}
Note: See TracBrowser for help on using the repository browser.