Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/18/13 15:08:46 (11 years ago)
Author:
ascheibe
Message:

#2015 jobs are now delete asynchronously in the hive job manager

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs

    r9107 r9223  
    2121
    2222using System;
     23using System.Collections.Generic;
     24using System.Threading.Tasks;
    2325using System.Windows.Forms;
    2426using HeuristicLab.Collections;
    2527using HeuristicLab.Core;
    2628using HeuristicLab.MainForm;
     29using HeuristicLab.MainForm.WindowsForms;
    2730
    2831namespace HeuristicLab.Clients.Hive.JobManager.Views {
     
    3033  [Content(typeof(ItemCollection<RefreshableJob>), false)]
    3134  public partial class RefreshableHiveJobListView : HeuristicLab.Core.Views.ItemCollectionView<RefreshableJob> {
     35    private Progress progress;
     36    private ProgressView progressView;
    3237
    3338    public RefreshableHiveJobListView() {
    3439      InitializeComponent();
    3540      itemsGroupBox.Text = "Jobs";
    36       this.itemsListView.View = View.Details;
     41      this.itemsListView.View = System.Windows.Forms.View.Details;
    3742      this.itemsListView.Columns.Clear();
    3843      this.itemsListView.Columns.Add(new ColumnHeader("Date") { Text = "Date" });
     
    4752      this.itemsListView.Sorting = SortOrder.Ascending;
    4853      this.itemsListView.Sort();
     54
     55      progress = new Progress() {
     56        CanBeCanceled = false,
     57        ProgressState = ProgressState.Finished
     58      };
     59      progressView = new ProgressView(this, progress);
    4960    }
    5061
     
    5364      refreshableJob.Job.Name = "New Hive Job";
    5465      return refreshableJob;
     66    }
     67
     68    protected override void OnLockedChanged() {
     69      base.OnLockedChanged();
     70
     71      itemsListView.Enabled = !Locked;
     72      addButton.Enabled = !Locked;
     73      sortAscendingButton.Enabled = !Locked;
     74      sortDescendingButton.Enabled = !Locked;
     75      removeButton.Enabled = !Locked;
     76    }
     77
     78    protected override void SetEnabledStateOfControls() {
     79      // if the view is locked, a job is currently beeing deleted and everything should be disabled
     80      if (!Locked)
     81        base.SetEnabledStateOfControls();
    5582    }
    5683
     
    7299          return;
    73100        } else {
    74           base.removeButton_Click(sender, e);
    75         }
    76       }
     101          DeleteHiveJobs(e);
     102        }
     103      }
     104    }
     105
     106    private void DeleteHiveJobs(EventArgs e) {
     107      if (itemsListView.SelectedItems.Count > 0) {
     108        List<RefreshableJob> items = new List<RefreshableJob>();
     109        foreach (ListViewItem item in itemsListView.SelectedItems)
     110          items.Add((RefreshableJob)item.Tag);
     111
     112        var task = System.Threading.Tasks.Task.Factory.StartNew(DeleteHiveJobsAsync, items);
     113
     114        task.ContinueWith((t) => {
     115          progress.Finish();
     116          MessageBox.Show("An error occured while deleting the job: " + Environment.NewLine + t.Exception, "HeuristicLab Hive Job Manager", MessageBoxButtons.OK, MessageBoxIcon.Error);
     117        }, TaskContinuationOptions.OnlyOnFaulted);
     118
     119        task.ContinueWith((t) => {
     120          itemsListView.SelectedItems.Clear();
     121        }, TaskContinuationOptions.OnlyOnRanToCompletion);
     122      }
     123    }
     124
     125    private void DeleteHiveJobsAsync(object items) {
     126      progress.Status = "Deleting job...";
     127      progress.ProgressState = ProgressState.Started;
     128      progress.ProgressValue = 0.0;
     129      foreach (RefreshableJob item in (List<RefreshableJob>)items) {
     130        Content.Remove(item);
     131      }
     132      progress.Finish();
    77133    }
    78134
     
    158214      return newGroup;
    159215    }
     216
     217    /// <summary>
     218    /// Clean up any resources being used.
     219    /// </summary>
     220    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
     221    protected override void Dispose(bool disposing) {
     222      if (disposing) {
     223        if (components != null) components.Dispose();
     224        progressView.Content = null;
     225        progressView.Dispose();
     226      }
     227      base.Dispose(disposing);
     228    }
    160229  }
    161230}
Note: See TracChangeset for help on using the changeset viewer.