Changeset 17891 for branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/ShapeConstraintsView.cs
- Timestamp:
- 03/12/21 16:41:42 (3 years ago)
- 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 1 1 bin 2 TestResults
-
- Property svn:ignore
-
branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/ShapeConstraintsView.cs
r17890 r17891 23 23 24 24 using System; 25 using System.Collections.Generic;26 25 using System.Drawing; 26 using System.Text; 27 27 using HeuristicLab.Collections; 28 using HeuristicLab.Core;29 28 using HeuristicLab.MainForm; 30 29 using HeuristicLab.MainForm.WindowsForms; 31 30 32 31 namespace HeuristicLab.Problems.DataAnalysis.Views { 33 [View(" ParsedConstraintView")]32 [View("ShapeConstraints View")] 34 33 [Content(typeof(ShapeConstraints), true)] 35 public partial class ProblemDataConstraintView : AsynchronousContentView {34 public partial class ShapeConstraintsView : AsynchronousContentView { 36 35 public new ShapeConstraints Content { 37 36 get => (ShapeConstraints)base.Content; … … 39 38 } 40 39 41 public ProblemDataConstraintView() { 40 public bool suspendUpdates = false; 41 42 public ShapeConstraintsView() { 42 43 InitializeComponent(); 43 44 errorOutput.Text = ""; … … 46 47 protected override void OnContentChanged() { 47 48 base.OnContentChanged(); 49 this.intervalConstraintsView.Content = Content; 48 50 UpdateControl(); 49 51 } … … 51 53 protected override void RegisterContentEvents() { 52 54 base.RegisterContentEvents(); 53 Content.ItemsAdded += constraints_ Updated;54 Content.ItemsRemoved += constraint_ removed;55 Content.ItemsAdded += constraints_Added; 56 Content.ItemsRemoved += constraint_Removed; 55 57 Content.Changed += Content_Changed; 58 Content.CollectionReset += constraints_Reset; 59 Content.ItemsMoved += constraints_Moved; 60 Content.ItemsReplaced += Content_ItemsReplaced; 61 Content.CheckedItemsChanged += Content_CheckedItemsChanged; 56 62 } 57 63 64 58 65 protected override void DeregisterContentEvents() { 59 Content.ItemsAdded -= constraints_ Updated;60 Content.ItemsRemoved -= constraint_ removed;66 Content.ItemsAdded -= constraints_Added; 67 Content.ItemsRemoved -= constraint_Removed; 61 68 Content.Changed -= Content_Changed; 69 Content.CollectionReset -= constraints_Reset; 70 Content.ItemsMoved -= constraints_Moved; 71 Content.ItemsReplaced -= Content_ItemsReplaced; 72 Content.CheckedItemsChanged -= Content_CheckedItemsChanged; 62 73 base.DeregisterContentEvents(); 63 74 } … … 68 79 69 80 70 71 81 private void parseBtn_Click(object sender, EventArgs e) { 72 82 if (constraintsInput.Text != null) { 73 intervalConstraints.Clear(); 83 suspendUpdates = true; 84 Content.Clear(); 74 85 try { 75 86 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; 80 90 //Catch the exception from the constraints parser and show it in the error dialog 81 91 } catch (ArgumentException ex) { 82 92 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; 85 95 } 96 suspendUpdates = false; 97 UpdateControl(); 86 98 } else { 87 99 errorOutput.Text = "No constraints were found!"; … … 90 102 91 103 private void UpdateControl() { 104 if (suspendUpdates) return; 92 105 if (Content == null) { 93 intervalConstraints.Clear(); 94 intervalConstraintsView.Content = intervalConstraints; 106 constraintsInput.Text = string.Empty; 95 107 } 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); 103 109 } 104 110 } 105 111 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(); 109 122 } 110 123 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, 112 129 CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) { 113 130 foreach (var addedItem in e.Items) addedItem.Value.Changed += constraint_Changed; 131 UpdateControl(); 114 132 } 115 133 116 private void constraint_ removed(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) {134 private void constraint_Removed(object sender, CollectionItemsChangedEventArgs<IndexedItem<ShapeConstraint>> e) { 117 135 foreach (var removedItem in e.Items) removedItem.Value.Changed -= constraint_Changed; 136 UpdateControl(); 118 137 } 119 138 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(); 124 157 } 125 158 126 159 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; 134 162 } 135 163
Note: See TracChangeset
for help on using the changeset viewer.