Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HiveJobView.cs @ 4423

Last change on this file since 4423 was 4423, checked in by cneumuel, 14 years ago
  • Refactored HL.Hive.Experiment. JobItems are not called HiveJobs and OptimizerJobs do not contain a hierarchy anymore.
  • Dynamic generation of jobs on a slave are not reflected on the client user interface.
  • Optimizer-Trees are now strictly synchronized with the HiveJob-Trees (also the ComputeInParallel property is taken into account when the Child HiveJobs are created)
  • Improved the way a class can report progress and lock the UI (IProgressReporter, IProgress, Progress, ProgressView)
  • Changes were made to the config-files, so that server and clients work with blade12.hpc.fh-hagenberg.at
  • Lots of small changes and bugfixes
File size: 7.0 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Drawing;
5using System.Data;
6using System.Linq;
7using System.Text;
8using System.Windows.Forms;
9using HeuristicLab.Core.Views;
10using HeuristicLab.MainForm;
11using HeuristicLab.Hive.JobBase;
12using HeuristicLab.Persistence.Default.Xml;
13using System.IO;
14using HeuristicLab.Hive.Experiment.Jobs;
15
16namespace HeuristicLab.Hive.Experiment.Views {
17  [View("HiveJob View")]
18  [Content(typeof(HiveJob), true)]
19  public partial class HiveJobView : ItemView {
20    public new HiveJob Content {
21      get { return (HiveJob)base.Content; }
22      set {
23        if (base.Content != value) {
24          base.Content = value;
25        }
26      }
27    }
28
29    public HiveJobView() {
30      InitializeComponent();
31    }
32
33    protected override void RegisterContentEvents() {
34      base.RegisterContentEvents();
35      Content.JobChanged += new EventHandler(Content_JobChanged);
36      Content.JobDtoChanged += new EventHandler(Content_JobDtoChanged);
37      Content.JobStateChanged += new EventHandler(Content_JobStateChanged);
38    }
39
40    protected override void DeregisterContentEvents() {
41      Content.JobChanged -= new EventHandler(Content_JobChanged);
42      Content.JobDtoChanged -= new EventHandler(Content_JobDtoChanged);
43      Content.JobStateChanged -= new EventHandler(Content_JobStateChanged);
44      base.DeregisterContentEvents();
45    }
46
47    protected override void OnContentChanged() {
48      base.OnContentChanged();
49      if (Content != null && Content.Job != null) {
50        logView.Content = Content.Job.Log;
51        childHiveJobView.Content = Content.ChildHiveJobs;
52        computeInParallelCheckBox.Checked = Content.Job.ComputeInParallel;
53      } else {
54        logView.Content = null;
55        childHiveJobView.Content = null;
56        computeInParallelCheckBox.Checked = false;
57      }
58      Content_JobChanged(this, EventArgs.Empty);
59      Content_JobDtoChanged(this, EventArgs.Empty);
60      Content_JobStateChanged(this, EventArgs.Empty);
61    }
62
63    void Content_JobChanged(object sender, EventArgs e) {
64      RegisterJobEvents();
65      Job_OptimizerChanged(this, e);
66    }
67
68    void Job_OptimizerChanged(object sender, EventArgs e) {
69      if (Content != null && Content.Job != null && Content.Job.Optimizer != null) {
70        optimizerNamedItemView.Content = Content.Job.Optimizer;
71        runCollectionView.Content = Content.Job.Optimizer.Runs;
72      } else {
73        optimizerNamedItemView.Content = null;
74        runCollectionView.Content = null;
75      }
76    }
77
78    private void RegisterJobEvents() {
79      if (Content != null && Content.Job != null) {
80        Content.Job.ComputeInParallelChanged += new EventHandler(Job_ComputeInParallelChanged);
81        Content.Job.OptimizerChanged += new EventHandler(Job_OptimizerChanged);
82      }
83    }
84
85    private void DeregisterJobEvents() {
86      if (Content != null && Content.Job != null) {
87        Content.Job.ComputeInParallelChanged -= new EventHandler(Job_ComputeInParallelChanged);
88        Content.Job.OptimizerChanged -= new EventHandler(Job_OptimizerChanged);
89      }
90    }
91
92    #region Content Events
93    private void Content_JobDtoChanged(object sender, EventArgs e) {
94      if (InvokeRequired) {
95        Invoke(new EventHandler(Content_JobDtoChanged), sender, e);
96      } else {
97        if (Content != null && Content.JobDto != null) {
98          this.jobIdTextBox.Text = Content.JobDto.Id.ToString();
99          this.dateCreatedTextBox.Text = Content.JobDto.DateCreated.ToString();
100          this.priorityTextBox.Text = Content.JobDto.Priority.ToString();
101          this.coresNeededTextBox.Text = Content.JobDto.CoresNeeded.ToString();
102          this.memoryNeededTextBox.Text = Content.JobDto.MemoryNeeded.ToString();
103        } else {
104          this.jobIdTextBox.Text = string.Empty;
105          this.dateCreatedTextBox.Text = string.Empty;
106          this.priorityTextBox.Text = string.Empty;
107          this.coresNeededTextBox.Text = string.Empty;
108          this.memoryNeededTextBox.Text = string.Empty;
109        }
110      }
111    }
112
113    private void Content_JobStateChanged(object sender, EventArgs e) {
114      if (InvokeRequired) {
115        Invoke(new EventHandler(Content_JobStateChanged), sender, e);
116      } else {
117        if (Content != null && Content.JobDto != null) {
118          this.stateTextBox.Text = Content.JobDto.State.ToString();
119          this.executionTimeTextBox.Text = Content.JobDto.ExecutionTime.ToString();
120          this.dateCalculatedText.Text = Content.JobDto.DateCalculated.ToString();
121          this.dateFinishedTextBox.Text = Content.JobDto.DateFinished.ToString();
122          this.exceptionTextBox.Text = Content.JobDto.Exception;
123        } else {
124          this.stateTextBox.Text = string.Empty;
125          this.executionTimeTextBox.Text = string.Empty;
126          this.dateCalculatedText.Text = string.Empty;
127          this.dateFinishedTextBox.Text = string.Empty;
128          this.exceptionTextBox.Text = string.Empty;
129        }
130      }
131    }
132
133    protected override void SetEnabledStateOfControls() {
134      if (InvokeRequired) {
135        this.InvokeIfRequired(c => { SetEnabledStateOfControls(); });
136      } else {
137        base.SetEnabledStateOfControls();
138        this.jobIdTextBox.ReadOnly = true;
139        this.stateTextBox.ReadOnly = true;
140        this.executionTimeTextBox.ReadOnly = true;
141        this.dateCreatedTextBox.ReadOnly = true;
142        this.dateCalculatedText.ReadOnly = true;
143        this.dateFinishedTextBox.ReadOnly = true;
144        this.exceptionTextBox.ReadOnly = true;
145
146        this.priorityTextBox.ReadOnly = this.ReadOnly;
147        this.coresNeededTextBox.ReadOnly = this.ReadOnly;
148        this.memoryNeededTextBox.ReadOnly = this.ReadOnly;
149        this.computeInParallelCheckBox.Enabled = !this.ReadOnly && this.Content != null && this.Content.Job != null && this.Content.Job.IsParallelizable;
150
151        optimizerNamedItemView.ReadOnly = true;
152        ShowOrHideChildJobTabPage();
153      }
154    }
155
156    void Job_ComputeInParallelChanged(object sender, EventArgs e) {
157      if (InvokeRequired) {
158        Invoke(new EventHandler(Job_ComputeInParallelChanged), sender, e);
159      } else {
160        computeInParallelCheckBox.Checked = Content.Job.ComputeInParallel;
161        ShowOrHideChildJobTabPage();
162      }
163    }
164
165    private void ShowOrHideChildJobTabPage() {
166      if (Content != null && Content.Job != null) {
167        if (!Content.Job.ComputeInParallel) {
168          if (tabControl.TabPages.Contains(childJobsTabPage))
169            tabControl.TabPages.Remove(childJobsTabPage);
170        } else {
171          if (!tabControl.TabPages.Contains(childJobsTabPage))
172            tabControl.TabPages.Insert(1, childJobsTabPage);
173        }
174      }
175    }
176    #endregion
177
178    private void computeInParallelCheckBox_CheckedChanged(object sender, EventArgs e) {
179      if (Content != null) {
180        this.Content.Job.ComputeInParallel = this.computeInParallelCheckBox.Checked;
181      }
182    }
183  }
184}
Note: See TracBrowser for help on using the repository browser.