Free cookie consent management tool by TermsFeed Policy Generator

source: stable/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs @ 15325

Last change on this file since 15325 was 15262, checked in by jkarder, 7 years ago

#2784: merged r14901 and r15121 into stable

File size: 5.1 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2016 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.Threading.Tasks;
24using System.Windows.Forms;
25using HeuristicLab.MainForm;
26using HeuristicLab.MainForm.WindowsForms;
27using HeuristicLab.PluginInfrastructure;
28
29namespace HeuristicLab.Clients.Hive.Views {
30  [View("OptimizerHiveTask View")]
31  [Content(typeof(OptimizerHiveTask), true)]
32  public partial class OptimizerHiveTaskView : HiveTaskView {
33    public new OptimizerHiveTask Content {
34      get { return (OptimizerHiveTask)base.Content; }
35      set {
36        if (base.Content != value) {
37          base.Content = value;
38        }
39      }
40    }
41
42    public OptimizerHiveTaskView() {
43      InitializeComponent();
44    }
45
46    protected override void Job_ItemChanged(object sender, EventArgs e) {
47      if (Content != null && Content.Task != null && Content.ItemTask.Item != null) {
48        Content.ExecuteReadActionOnItemTask(new Action(delegate() {
49          runCollectionViewHost.Content = Content.ItemTask.Item.Runs;
50        }));
51      } else {
52        runCollectionViewHost.Content = null;
53      }
54    }
55
56    #region Content Events
57    protected override void RegisterContentEvents() {
58      base.RegisterContentEvents();
59      Content.IsControllableChanged += new EventHandler(Content_IsControllableChanged);
60      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, Content.Progress);
61    }
62
63    protected override void DeregisterContentEvents() {
64      Content.IsControllableChanged -= new EventHandler(Content_IsControllableChanged);
65      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this, false);
66      base.DeregisterContentEvents();
67    }
68
69    protected virtual void Content_IsControllableChanged(object sender, EventArgs e) {
70      SetEnabledStateOfControls();
71    }
72    #endregion
73
74    #region Child Control Events
75    private void startButton_Click(object sender, EventArgs e) {
76      var task = System.Threading.Tasks.Task.Factory.StartNew(ResumeTaskAsync);
77      task.ContinueWith((t) => {
78        Content.Progress.Finish();
79        ErrorHandling.ShowErrorDialog(this, "An error occured while resuming the task.", t.Exception);
80      }, TaskContinuationOptions.OnlyOnFaulted);
81    }
82
83    private void pauseButton_Click(object sender, EventArgs e) {
84      var task = System.Threading.Tasks.Task.Factory.StartNew(PauseTaskAsync);
85      task.ContinueWith((t) => {
86        Content.Progress.Finish();
87        ErrorHandling.ShowErrorDialog(this, "An error occured while pausing the task.", t.Exception);
88      }, TaskContinuationOptions.OnlyOnFaulted);
89    }
90
91    private void stopButton_Click(object sender, EventArgs e) {
92      var task = System.Threading.Tasks.Task.Factory.StartNew(StopTaskAsync);
93      task.ContinueWith((t) => {
94        Content.Progress.Finish();
95        ErrorHandling.ShowErrorDialog(this, "An error occured while stopping the task.", t.Exception);
96      }, TaskContinuationOptions.OnlyOnFaulted);
97    }
98    #endregion
99
100    private void PauseTaskAsync() {
101      Content.Progress.Start("Pausing task. Please be patient for the command to take effect.");
102      Content.Pause();
103      Content.Progress.Finish();
104    }
105
106    private void StopTaskAsync() {
107      Content.Progress.Start("Stopping task. Please be patient for the command to take effect.");
108      Content.Stop();
109      Content.Progress.Finish();
110    }
111
112    private void ResumeTaskAsync() {
113      Content.Progress.Start("Resuming task. Please be patient for the command to take effect.");
114      Content.Restart();
115      Content.Progress.Finish();
116    }
117
118    protected override void SetEnabledStateOfControls() {
119      base.SetEnabledStateOfControls();
120
121      this.startButton.Enabled = Content != null && Content.IsControllable && !Content.Task.Command.HasValue && (Content.Task.State == TaskState.Paused);
122      this.pauseButton.Enabled = Content != null && Content.IsControllable && !Content.Task.Command.HasValue && Content.Task.State == TaskState.Calculating;
123      this.stopButton.Enabled = Content != null && Content.IsControllable && !Content.Task.Command.HasValue && (Content.Task.State == TaskState.Calculating || Content.Task.State == TaskState.Waiting || Content.Task.State == TaskState.Paused);
124    }
125  }
126}
Note: See TracBrowser for help on using the repository browser.