Changeset 13666 for trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.cs
- Timestamp:
- 03/08/16 15:06:33 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBProblemView.cs
r13593 r13666 21 21 22 22 using HeuristicLab.Common.Resources; 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Core.Views; 24 25 using HeuristicLab.Data; … … 28 29 using System; 29 30 using System.Collections.Generic; 31 using System.Drawing; 30 32 using System.Linq; 31 33 using System.Windows.Forms; … … 36 38 [Content(typeof(MultiObjectiveOKBProblem), true)] 37 39 public sealed partial class OKBProblemView : NamedItemView { 40 private readonly CheckedItemList<ICharacteristicCalculator> calculatorList; 41 38 42 public new OKBProblem Content { 39 43 get { return (OKBProblem)base.Content; } … … 43 47 public OKBProblemView() { 44 48 InitializeComponent(); 49 var calculatorListView = new CheckedItemListView<ICharacteristicCalculator>() { 50 Anchor = AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Top, 51 Location = new Point(flaSplitContainer.Padding.Left, calculateButton.Location.Y + calculateButton.Height + calculateButton.Padding.Bottom + 3), 52 }; 53 calculatorListView.Size = new Size(flaSplitContainer.Panel1.Size.Width - flaSplitContainer.Panel1.Padding.Horizontal, 54 flaSplitContainer.Panel1.Height - calculatorListView.Location.Y - flaSplitContainer.Panel1.Padding.Bottom); 55 calculatorList = new CheckedItemList<ICharacteristicCalculator>(); 56 calculatorList.ItemsAdded += CalculatorListOnChanged; 57 calculatorList.ItemsRemoved += CalculatorListOnChanged; 58 calculatorList.ItemsReplaced += CalculatorListOnChanged; 59 calculatorList.CollectionReset += CalculatorListOnChanged; 60 calculatorList.CheckedItemsChanged += CalculatorListOnChanged; 61 62 calculatorListView.Content = calculatorList.AsReadOnly(); 63 64 flaSplitContainer.Panel1.Controls.Add(calculatorListView); 65 calculateButton.Text = string.Empty; 66 calculateButton.Image = VSImageLibrary.Play; 45 67 refreshButton.Text = string.Empty; 46 68 refreshButton.Image = VSImageLibrary.Refresh; … … 51 73 uploadCharacteristicsButton.Text = string.Empty; 52 74 uploadCharacteristicsButton.Image = VSImageLibrary.PublishToWeb; 75 } 76 77 private void CalculatorListOnChanged(object sender, EventArgs e) { 78 SetEnabledStateOfControls(); 53 79 } 54 80 … … 91 117 uploadCharacteristicsButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly 92 118 && characteristicsMatrixView.Content != null && characteristicsMatrixView.Content.Rows > 0; 93 calculateButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly ;119 calculateButton.Enabled = Content != null && Content.ProblemId != -1 && !Locked && !ReadOnly && calculatorList.CheckedItems.Any(); 94 120 } 95 121 … … 101 127 102 128 private void UpdateCharacteristicCalculators() { 103 calculatorListView.Items.Clear(); 104 calculatorListView.Groups.Clear(); 129 calculatorList.Clear(); 105 130 if (Content == null || Content.ProblemId == -1) return; 106 131 var problem = Content.CloneProblem(); 107 132 var calculators = ApplicationManager.Manager.GetInstances<ICharacteristicCalculator>().ToList(); 108 try { 109 calculatorListView.BeginUpdate(); 110 foreach (var calc in calculators) { 111 calc.Problem = problem; 112 var group = calculatorListView.Groups.Add(calc.Name, calc.Name); 113 group.Tag = calc; 114 115 var paramItem = calculatorListView.Items.Add(calc.Name + ".Parameters", "Parameters"); 116 paramItem.Group = group; 117 paramItem.Tag = "param"; 118 119 var charactItem = calculatorListView.Items.Add(calc.Name + ".Characteristics", "Characteristics"); 120 charactItem.Group = group; 121 charactItem.Tag = "chara"; 122 } 123 } finally { calculatorListView.EndUpdate(); } 133 foreach (var calc in calculators) { 134 calc.Problem = problem; 135 if (!calc.CanCalculate()) continue; 136 calculatorList.Add(calc, true); 137 } 124 138 } 125 139 … … 193 207 } catch (Exception ex) { ErrorHandling.ShowErrorDialog(ex); } 194 208 } 195 private void calculatorListView_SelectedIndexChanged(object sender, EventArgs e) {196 if (InvokeRequired) {197 Invoke((Action<object, EventArgs>)calculatorListView_SelectedIndexChanged, sender, e);198 return;199 }200 if (calculatorListView.SelectedIndices.Count == 0) calculatorViewHost.Content = null;201 else {202 var item = calculatorListView.SelectedItems[0];203 if ((string)item.Tag == "param") {204 calculatorViewHost.Content = ((ICharacteristicCalculator)item.Group.Tag);205 } else if ((string)item.Tag == "chara") {206 calculatorViewHost.Content = ((ICharacteristicCalculator)item.Group.Tag).Characteristics;207 }208 }209 }210 209 private void calculateButton_Click(object sender, EventArgs e) { 211 var calculators = calculatorListView.Groups.OfType<ListViewGroup>() 212 .Select(x => (ICharacteristicCalculator)x.Tag) 213 .Where(x => x.Characteristics.CheckedItems.Any() 214 && x.CanCalculate()).ToList(); 210 var calculators = calculatorList.CheckedItems.Select(x => x.Value).Where(x => x.CanCalculate()).ToList(); 215 211 if (calculators.Count == 0) return; 216 212
Note: See TracChangeset
for help on using the changeset viewer.