Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/05/10 03:17:25 (14 years ago)
Author:
swagner
Message:

Continued work on algorithm batch processing (#947).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs

    r3261 r3265  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Windows.Forms;
    2524using HeuristicLab.Common;
     25using HeuristicLab.Core;
    2626using HeuristicLab.Core.Views;
    2727using HeuristicLab.MainForm;
     
    5858
    5959    protected override void DeregisterContentEvents() {
     60      Content.AlgorithmChanged -= new EventHandler(Content_AlgorithmChanged);
    6061      Content.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
     62      Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
    6163      Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
    62       Content.Prepared -= new EventHandler(Content_Prepared);
    63       Content.AlgorithmChanged -= new EventHandler(Content_AlgorithmChanged);
    6464      Content.RepetitionsChanged -= new EventHandler(Content_RepetitionsChanged);
    65       Content.RunningChanged -= new EventHandler(Content_RunningChanged);
    6665      base.DeregisterContentEvents();
    6766    }
    6867    protected override void RegisterContentEvents() {
    6968      base.RegisterContentEvents();
     69      Content.AlgorithmChanged += new EventHandler(Content_AlgorithmChanged);
    7070      Content.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
     71      Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
    7172      Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
    72       Content.Prepared += new EventHandler(Content_Prepared);
    73       Content.AlgorithmChanged += new EventHandler(Content_AlgorithmChanged);
    7473      Content.RepetitionsChanged += new EventHandler(Content_RepetitionsChanged);
    75       Content.RunningChanged += new EventHandler(Content_RunningChanged);
    7674    }
    7775
    7876    protected override void OnContentChanged() {
    7977      base.OnContentChanged();
    80       stopButton.Enabled = false;
    8178      if (Content == null) {
    8279        repetitionsNumericUpDown.Value = 1;
     
    8582        runsView.Content = null;
    8683        tabControl.Enabled = false;
    87         startButton.Enabled = resetButton.Enabled = false;
     84        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
    8885        executionTimeTextBox.Text = "-";
    8986        executionTimeTextBox.Enabled = false;
     
    9693        runsView.Content = Content.Runs;
    9794        tabControl.Enabled = true;
    98         startButton.Enabled = !Content.Finished;
    99         resetButton.Enabled = true;
    100         UpdateExecutionTimeTextBox();
     95        EnableDisableButtons();
     96        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
    10197        executionTimeTextBox.Enabled = true;
    10298      }
     
    104100
    105101    protected override void OnClosed(FormClosedEventArgs e) {
    106       if (Content != null) Content.Stop();
     102      if ((Content != null) && (Content.ExecutionState == ExecutionState.Started)) Content.Stop();
    107103      base.OnClosed(e);
    108104    }
    109105
    110106    #region Content Events
     107    private void Content_ExecutionStateChanged(object sender, EventArgs e) {
     108      if (InvokeRequired)
     109        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
     110      else {
     111        nameTextBox.Enabled = Content.ExecutionState != ExecutionState.Started;
     112        descriptionTextBox.Enabled = Content.ExecutionState != ExecutionState.Started;
     113        SaveEnabled = Content.ExecutionState != ExecutionState.Started;
     114        repetitionsNumericUpDown.Enabled = Content.ExecutionState != ExecutionState.Started;
     115        newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = Content.ExecutionState != ExecutionState.Started;
     116        EnableDisableButtons();
     117      }
     118    }
     119    private void Content_ExecutionTimeChanged(object sender, EventArgs e) {
     120      if (InvokeRequired)
     121        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
     122      else
     123        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
     124    }
     125    private void Content_ExceptionOccurred(object sender, EventArgs<Exception> e) {
     126      if (InvokeRequired)
     127        Invoke(new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred), sender, e);
     128      else
     129        Auxiliary.ShowErrorMessageBox(e.Value);
     130    }
    111131    private void Content_AlgorithmChanged(object sender, EventArgs e) {
    112132      if (InvokeRequired)
     
    118138      }
    119139    }
    120     private void Content_Prepared(object sender, EventArgs e) {
    121       if (InvokeRequired)
    122         Invoke(new EventHandler(Content_Prepared), sender, e);
    123       else {
    124         startButton.Enabled = !Content.Finished;
    125         UpdateExecutionTimeTextBox();
    126       }
    127     }
    128     private void Content_RunningChanged(object sender, EventArgs e) {
    129       if (InvokeRequired)
    130         Invoke(new EventHandler(Content_RunningChanged), sender, e);
    131       else {
    132         SaveEnabled = !Content.Running;
    133         repetitionsNumericUpDown.Enabled = !Content.Running;
    134         newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = !Content.Running;
    135         startButton.Enabled = !Content.Running && !Content.Finished;
    136         stopButton.Enabled = Content.Running;
    137         resetButton.Enabled = !Content.Running;
    138         UpdateExecutionTimeTextBox();
    139       }
    140     }
    141     private void Content_ExecutionTimeChanged(object sender, EventArgs e) {
    142       UpdateExecutionTimeTextBox();
    143     }
    144     private void Content_ExceptionOccurred(object sender, EventArgs<Exception> e) {
    145       if (InvokeRequired)
    146         Invoke(new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred), sender, e);
     140    private void Content_RepetitionsChanged(object sender, EventArgs e) {
     141      if (InvokeRequired)
     142        Invoke(new EventHandler(Content_RepetitionsChanged), sender, e);
    147143      else
    148         Auxiliary.ShowErrorMessageBox(e.Value);
    149     }
    150     private void Content_RepetitionsChanged(object sender, EventArgs e) {
    151       if (InvokeRequired)
    152         Invoke(new EventHandler(Content_RepetitionsChanged), sender, e);
    153       else {
    154144        repetitionsNumericUpDown.Value = Content.Repetitions;
    155         startButton.Enabled = !Content.Finished;
    156       }
    157145    }
    158146    #endregion
    159147
    160148    #region Control events
     149    private void repetitionsNumericUpDown_Validated(object sender, System.EventArgs e) {
     150      if (repetitionsNumericUpDown.Text == string.Empty)
     151        repetitionsNumericUpDown.Text = repetitionsNumericUpDown.Value.ToString();
     152    }
    161153    private void repetitionsNumericUpDown_ValueChanged(object sender, EventArgs e) {
    162154      Content.Repetitions = (int)repetitionsNumericUpDown.Value;
     
    227219      Content.Start();
    228220    }
     221    private void pauseButton_Click(object sender, EventArgs e) {
     222      Content.Pause();
     223    }
    229224    private void stopButton_Click(object sender, EventArgs e) {
    230225      Content.Stop();
    231226    }
    232227    private void resetButton_Click(object sender, EventArgs e) {
    233       Content.Prepare();
     228      if (Content.Runs.Count > 0) {
     229        if (MessageBox.Show(this, "Clear all runs executed so far?", "Clear All Runs?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
     230          Content.Prepare(true);
     231        else
     232          Content.Prepare(false);
     233      } else {
     234        Content.Prepare();
     235      }
    234236    }
    235237    #endregion
    236238
    237239    #region Helpers
    238     private void UpdateExecutionTimeTextBox() {
    239       if (InvokeRequired)
    240         Invoke(new Action(UpdateExecutionTimeTextBox));
    241       else
    242         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
     240    private void EnableDisableButtons() {
     241      startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
     242      pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
     243      stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
     244      resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
    243245    }
    244246    #endregion
Note: See TracChangeset for help on using the changeset viewer.