Free cookie consent management tool by TermsFeed Policy Generator

source: stable/HeuristicLab.Optimization.Views/3.3/OptimizerListView.cs @ 17767

Last change on this file since 17767 was 17181, checked in by swagner, 5 years ago

#2875: Merged r17180 from trunk to stable

File size: 3.8 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Windows.Forms;
24using HeuristicLab.Core;
25using HeuristicLab.Core.Views;
26using HeuristicLab.MainForm;
27using HeuristicLab.PluginInfrastructure;
28
29namespace HeuristicLab.Optimization.Views {
30  [View("OptimizerList View")]
31  [Content(typeof(OptimizerList), true)]
32  [Content(typeof(IItemList<IOptimizer>), false)]
33  public partial class OptimizerListView : ItemListView<IOptimizer> {
34    /// <summary>
35    /// Initializes a new instance of <see cref="VariablesScopeView"/> with caption "Variables Scope View".
36    /// </summary>
37    public OptimizerListView() {
38      InitializeComponent();
39      itemsGroupBox.Text = "Optimizers";
40    }
41
42    protected override IOptimizer CreateItem() {
43      if (typeSelectorDialog == null) {
44        typeSelectorDialog = new TypeSelectorDialog();
45        typeSelectorDialog.Caption = "Select Optimizer";
46        typeSelectorDialog.TypeSelector.Caption = "Available Optimizers";
47        typeSelectorDialog.TypeSelector.Configure(typeof(IOptimizer), false, true);
48      }
49
50      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
51        try {
52          return (IOptimizer)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
53        } catch (Exception ex) {
54          ErrorHandling.ShowErrorDialog(this, ex);
55        }
56      }
57      return null;
58    }
59
60    protected override void DeregisterItemEvents(IOptimizer item) {
61      var batchRun = item as BatchRun;
62      if (batchRun != null) {
63        batchRun.RepetitionsChanged -= BatchRun_UpdateText;
64        batchRun.RepetetionsCounterChanged -= BatchRun_UpdateText;
65      }
66      base.DeregisterItemEvents(item);
67    }
68
69    protected override void RegisterItemEvents(IOptimizer item) {
70      base.RegisterItemEvents(item);
71      var batchRun = item as BatchRun;
72      if (batchRun != null) {
73        batchRun.RepetitionsChanged += BatchRun_UpdateText;
74        batchRun.RepetetionsCounterChanged += BatchRun_UpdateText;
75      }
76    }
77
78    protected override ListViewItem CreateListViewItem(IOptimizer item) {
79      var listViewItem = base.CreateListViewItem(item);
80      var batchRun = item as BatchRun;
81      if (batchRun != null) {
82        listViewItem.Text += string.Format(" {0}/{1}", batchRun.RepetitionsCounter, batchRun.Repetitions);
83      }
84      return listViewItem;
85    }
86
87    protected override void UpdateListViewItemText(ListViewItem listViewItem) {
88      base.UpdateListViewItemText(listViewItem);
89      var batchRun = listViewItem.Tag as BatchRun;
90      if (batchRun != null) {
91        listViewItem.Text = batchRun.ToString() + string.Format(" {0}/{1}", batchRun.RepetitionsCounter, batchRun.Repetitions);
92      }
93    }
94
95    protected virtual void BatchRun_UpdateText(object sender, EventArgs eventArgs) {
96      if (sender is BatchRun) {
97        foreach (var item in GetListViewItemsForItem(sender as BatchRun))
98          UpdateListViewItemText(item);
99      }
100    }
101  }
102}
Note: See TracBrowser for help on using the repository browser.