Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/12/21 16:41:42 (3 years ago)
Author:
gkronber
Message:

#3073 refactoring to prepare for trunk reintegration

Location:
branches/3073_IA_constraint_splitting_reintegration
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/3073_IA_constraint_splitting_reintegration

    • Property svn:ignore
      •  

        old new  
        11bin
         2TestResults
  • branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/ShapeConstraintsView.cs

    r17890 r17891  
    2323
    2424using System;
    25 using System.Collections.Generic;
    2625using System.Drawing;
     26using System.Text;
    2727using HeuristicLab.Collections;
    28 using HeuristicLab.Core;
    2928using HeuristicLab.MainForm;
    3029using HeuristicLab.MainForm.WindowsForms;
    3130
    3231namespace HeuristicLab.Problems.DataAnalysis.Views {
    33   [View("ParsedConstraint View")]
     32  [View("ShapeConstraints View")]
    3433  [Content(typeof(ShapeConstraints), true)]
    35   public partial class ProblemDataConstraintView : AsynchronousContentView {
     34  public partial class ShapeConstraintsView : AsynchronousContentView {
    3635    public new ShapeConstraints Content {
    3736      get => (ShapeConstraints)base.Content;
     
    3938    }
    4039
    41     public ProblemDataConstraintView() {
     40    public bool suspendUpdates = false;
     41
     42    public ShapeConstraintsView() {
    4243      InitializeComponent();
    4344      errorOutput.Text = "";
     
    4647    protected override void OnContentChanged() {
    4748      base.OnContentChanged();
     49      this.intervalConstraintsView.Content = Content;
    4850      UpdateControl();
    4951    }
     
    5153    protected override void RegisterContentEvents() {
    5254      base.RegisterContentEvents();
    53       Content.ItemsAdded += constraints_Updated;
    54       Content.ItemsRemoved += constraint_removed;
     55      Content.ItemsAdded += constraints_Added;
     56      Content.ItemsRemoved += constraint_Removed;
    5557      Content.Changed += Content_Changed;
     58      Content.CollectionReset += constraints_Reset;
     59      Content.ItemsMoved += constraints_Moved;
     60      Content.ItemsReplaced += Content_ItemsReplaced;
     61      Content.CheckedItemsChanged += Content_CheckedItemsChanged;
    5662    }
    5763
     64
    5865    protected override void DeregisterContentEvents() {
    59       Content.ItemsAdded -= constraints_Updated;
    60       Content.ItemsRemoved -= constraint_removed;
     66      Content.ItemsAdded -= constraints_Added;
     67      Content.ItemsRemoved -= constraint_Removed;
    6168      Content.Changed -= Content_Changed;
     69      Content.CollectionReset -= constraints_Reset;
     70      Content.ItemsMoved -= constraints_Moved;
     71      Content.ItemsReplaced -= Content_ItemsReplaced;
     72      Content.CheckedItemsChanged -= Content_CheckedItemsChanged;
    6273      base.DeregisterContentEvents();
    6374    }
     
    6879
    6980
    70 
    7181    private void parseBtn_Click(object sender, EventArgs e) {
    7282      if (constraintsInput.Text != null) {
    73         intervalConstraints.Clear();
     83        suspendUpdates = true;
     84        Content.Clear();
    7485        try {
    7586          var parsedConstraints = ShapeConstraintsParser.ParseConstraints(constraintsInput.Text);
    76           Content.Clear();
    77           Content.AddRange(parsedConstraints);
    78           InfoText = "Constraints successfully parsed.";
    79           InfoColor = Color.DarkGreen;
     87          Content = parsedConstraints;
     88          errorOutput.Text = "Constraints successfully parsed.";
     89          errorOutput.ForeColor = Color.DarkGreen;
    8090          //Catch the exception from the constraints parser and show it in the error dialog
    8191        } catch (ArgumentException ex) {
    8292          Content.Clear();
    83           InfoText = ex.Message.Replace("Parameter name", "@Line");
    84           InfoColor = Color.DarkRed;
     93          errorOutput.Text = ex.Message.Replace("Parameter name", "@Line");
     94          errorOutput.ForeColor = Color.DarkRed;
    8595        }
     96        suspendUpdates = false;
     97        UpdateControl();
    8698      } else {
    8799        errorOutput.Text = "No constraints were found!";
     
    90102
    91103    private void UpdateControl() {
     104      if (suspendUpdates) return;
    92105      if (Content == null) {
    93         intervalConstraints.Clear();
    94         intervalConstraintsView.Content = intervalConstraints;
     106        constraintsInput.Text = string.Empty;
    95107      } else {
    96         intervalConstraints.Clear();
    97         constraintsInput.Text = Content.Input;
    98         errorOutput.ForeColor = InfoColor;
    99         errorOutput.Text = InfoText;
    100         foreach (var constraint in Content) intervalConstraints.Add(constraint, constraint.Enabled);
    101 
    102         intervalConstraintsView.Content = intervalConstraints;
     108        constraintsInput.Text = ToString(Content);
    103109      }
    104110    }
    105111
    106     private void constraint_Changed(object sender, EventArgs e) {
    107       var constraint = (ShapeConstraint)sender;
    108       intervalConstraints.SetItemCheckedState(constraint, constraint.Enabled);
     112    private string ToString(ShapeConstraints constraints) {
     113      var sb = new StringBuilder();
     114      foreach (var constraint in constraints) {
     115        if (!constraints.ItemChecked(constraint)) {
     116          sb.Append("# ").AppendLine(constraint.ToString());
     117        } else {
     118          sb.AppendLine(constraint.ToString());
     119        }
     120      }
     121      return sb.ToString();
    109122    }
    110123
    111     private void constraints_Updated(object sender,
     124    private void constraint_Changed(object sender, EventArgs e) {
     125      UpdateControl();
     126    }
     127
     128    private void constraints_Added(object sender,
    112129                                     CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
    113130      foreach (var addedItem in e.Items) addedItem.Value.Changed += constraint_Changed;
     131      UpdateControl();
    114132    }
    115133
    116     private void constraint_removed(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
     134    private void constraint_Removed(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
    117135      foreach (var removedItem in e.Items) removedItem.Value.Changed -= constraint_Changed;
     136      UpdateControl();
    118137    }
    119138
    120     private void constraint_CheckedItemChanged(object sender,
    121                                                CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
    122       ICheckedItemList<ShapeConstraint> checkedItemList = (ICheckedItemList<ShapeConstraint>)sender;
    123       foreach (var indexedItem in e.Items) indexedItem.Value.Enabled = checkedItemList.ItemChecked(indexedItem.Value);
     139    private void constraints_Moved(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
     140      UpdateControl();
     141    }
     142
     143    private void constraints_Reset(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
     144      foreach (var addedItem in e.Items) addedItem.Value.Changed += constraint_Changed;
     145      foreach (var removedItem in e.OldItems) removedItem.Value.Changed -= constraint_Changed;
     146      UpdateControl();
     147    }
     148
     149    private void Content_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
     150      UpdateControl();
     151    }
     152
     153    private void Content_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {
     154      foreach (var addedItem in e.Items) addedItem.Value.Changed += constraint_Changed;
     155      foreach (var removedItem in e.OldItems) removedItem.Value.Changed -= constraint_Changed;
     156      UpdateControl();
    124157    }
    125158
    126159    private void constraintsInput_TextChanged(object sender, EventArgs e) {
    127       if (Content.Input != constraintsInput.Text) {
    128         Content.Input = constraintsInput.Text;
    129         Content.InfoText = "Unparsed changes! Press parse button to save changes.";
    130         Content.InfoColor = Color.DarkOrange;
    131       } else {
    132         errorOutput.Text = "";
    133       }
     160      errorOutput.Text = "Unparsed changes! Press parse button to save changes.";
     161      errorOutput.ForeColor = Color.DarkOrange;
    134162    }
    135163
Note: See TracChangeset for help on using the changeset viewer.