Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/EvaluationCacheView.cs @ 6265

Last change on this file since 6265 was 6265, checked in by epitzer, 13 years ago

Enable export of Cache to CSV file. (#1516)

File size: 2.8 KB
Line 
1using System;
2using System.Windows.Forms;
3using HeuristicLab.Core.Views;
4using HeuristicLab.MainForm;
5using System.Threading;
6using System.IO;
7using System.ComponentModel;
8
9namespace HeuristicLab.Problems.ExternalEvaluation.Views {
10
11  [View("EvaluationCacheView")]
12  [Content(typeof(EvaluationCache), IsDefaultView = true)]
13  public sealed partial class EvaluationCacheView : ParameterizedNamedItemView {
14
15    public new EvaluationCache Content {
16      get { return (EvaluationCache)base.Content; }
17      set { base.Content = value; }
18    }
19
20    public EvaluationCacheView() {
21      InitializeComponent();
22    }
23
24    protected override void DeregisterContentEvents() {
25      Content.SizeChanged -= new System.EventHandler(Content_StatusChanged);
26      Content.HitsChanged -= new System.EventHandler(Content_StatusChanged);
27      Content.ActiveEvalutionsChanged -= new EventHandler(Content_StatusChanged);
28      base.DeregisterContentEvents();
29    }
30
31    protected override void RegisterContentEvents() {
32      base.RegisterContentEvents();
33      Content.SizeChanged += new System.EventHandler(Content_StatusChanged);
34      Content.HitsChanged += new System.EventHandler(Content_StatusChanged);
35      Content.ActiveEvalutionsChanged += new EventHandler(Content_StatusChanged);
36    }
37
38    #region Event Handlers (Content)
39    void Content_StatusChanged(object sender, EventArgs e) {
40      if (InvokeRequired)
41        Invoke(new EventHandler(Content_StatusChanged), sender, e);
42      else
43        hits_sizeTextBox.Text = string.Format("{0}/{1} ({2} active)", Content.Hits, Content.Size, Content.ActiveEvaluations);
44    }
45
46    #endregion
47
48    protected override void OnContentChanged() {
49      base.OnContentChanged();
50      if (Content == null) {
51        hits_sizeTextBox.Text = "#/#";
52      } else {
53        Content_StatusChanged(this, EventArgs.Empty);
54      }
55    }
56
57    protected override void SetEnabledStateOfControls() {
58      base.SetEnabledStateOfControls();
59      clearButton.Enabled = !ReadOnly && Content != null;
60      saveButton.Enabled = !ReadOnly && Content != null;
61    }
62
63    #region Event Handlers (child controls)
64    private void clearButton_Click(object sender, EventArgs e) {
65      Content.Reset();
66    }
67    #endregion
68   
69    private void saveButton_Click(object sender, EventArgs e) {
70      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
71        saveButton.Enabled = false;
72        BackgroundWorker worker = new BackgroundWorker();
73        worker.DoWork += (s, a) => {
74          Content.Save((string)a.Argument);
75        };
76        worker.RunWorkerCompleted += (s, a) => {
77          SetEnabledStateOfControls();
78        };
79        worker.RunWorkerAsync(saveFileDialog.FileName);
80      }
81    }   
82  }
83}
Note: See TracBrowser for help on using the repository browser.