Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.MainForm/3.3/Progress.cs @ 8153

Last change on this file since 8153 was 8145, checked in by ascheibe, 12 years ago

#1762 implemented review comments:

  • removed self disposing. The progress view now reacts if a progress is set and Finish() is now called on the progress object and not the view.
  • Moved Cancel event from ProgressView to Progress
  • throw ArgumentNullException if the parent view is null
File size: 2.7 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2012 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;
23
24namespace HeuristicLab.MainForm {
25  public class Progress : IProgress {
26    private string status;
27    public string Status {
28      get {
29        return this.status;
30      }
31      set {
32        if (this.status != value) {
33          this.status = value;
34          OnStatusChanged();
35        }
36      }
37    }
38
39    public bool CancelRequested { get; set; }
40
41    private double progressValue;
42    public double ProgressValue {
43      get {
44        return this.progressValue;
45      }
46      set {
47        if (this.progressValue != value) {
48          this.progressValue = value;
49          OnProgressChanged();
50        }
51      }
52    }
53
54    public Progress() { }
55
56    public Progress(string status) {
57      this.Status = status;
58    }
59
60    public void Finish() {
61      OnFinished();
62    }
63
64    public void SignalSuccessfulCancelation() {
65      OnCanceled();
66    }
67
68    #region Event Handler
69    public event EventHandler Canceled;
70    private void OnCanceled() {
71      var handler = Canceled;
72      try {
73        if (handler != null) handler(this, EventArgs.Empty);
74      }
75      catch (Exception) { }
76    }
77
78    public event EventHandler Finished;
79    private void OnFinished() {
80      var handler = Finished;
81      try {
82        if (handler != null) handler(this, EventArgs.Empty);
83      }
84      catch (Exception) { }
85    }
86
87    public event EventHandler StatusChanged;
88    private void OnStatusChanged() {
89      var handler = StatusChanged;
90      try {
91        if (handler != null) handler(this, EventArgs.Empty);
92      }
93      catch (Exception) { }
94    }
95
96    public event EventHandler ProgressValueChanged;
97    private void OnProgressChanged() {
98      var handler = ProgressValueChanged;
99      try {
100        if (handler != null) handler(this, EventArgs.Empty);
101      }
102      catch (Exception) { }
103    }
104    #endregion
105  }
106}
Note: See TracBrowser for help on using the repository browser.