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