Exemplo n.º 1
0
 /// <inheritdoc />
 protected override void InitCommands()
 {
     AddJobCommand = new RelayCommand(
         () =>
     {
         MessengerInstance.Send(new AddJobWindowOpenMessage());
     });
     RemoveJobCommand = new RelayCommand <Window>(
         window =>
     {
         if (window == null)
         {
             window = MessageListener.GetWindow(typeof(MainWindow));
         }
         if (MessageBox.Show(window, "Do you want to delete the job?", "Delete job", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
         {
             JobDefinitions.Remove(CurrentSelectedJobDefinition);
             CurrentSelectedJobDefinition = null;
             if (JobDefinitionsView.Count > 0)
             {
                 JobDefinitionsView.MoveCurrentToFirst();
             }
         }
     },
         window => CurrentSelectedJobDefinition != null);
     ClosingCommand = new RelayCommand(
         () =>
     {
         while (JobDefinitions.Any(j => j.CurrentJob != null && j.CurrentJob.State == JobStateEnum.Stopping))
         {
             Task.Delay(100).Wait();
         }
         JobDefinitions.Where(j => j.CurrentJob != null && !j.CurrentJob.Finished.HasValue).ToList().ForEach(
             j =>
         {
             j.CurrentJob.Stop();
         });
         SaveCommand.Execute(null);
     });
     LoadedCommand = new RelayCommand(ReloadOptions);
     SaveCommand   = new RelayCommand(
         () =>
     {
         Options.JobDefinitions = JobDefinitions.ToList();
         var fileContent        = JsonConvert.SerializeObject(Options);
         try
         {
             File.WriteAllText(_optionsFilePath, fileContent);
         }
         catch (Exception ex)
         {
             // TODO
             Trace.TraceError(ex.Message);
         }
     });
     StartStopJobCommand = new RelayCommand <JobModel>(
         jobDef =>
     {
         if (jobDef == null)
         {
             // don't know if this can happen
             return;
         }
         if (jobDef.IsBusy)
         {
             jobDef.CurrentJob.Stop();
             return;
         }
         CurrentSelectedPingJob = jobDef.StartNew();
     },
         job => CurrentSelectedJobDefinition != null);
     CleanJobHistoryCommand = new RelayCommand <JobModel>(
         jobDef =>
     {
         if (jobDef == null)
         {
             // don't know if this can happen
             return;
         }
         jobDef.Jobs.Clear();
         JobDefinitionsView.Refresh();
     },
         job => CurrentSelectedJobDefinition != null && !CurrentSelectedJobDefinition.IsBusy && CurrentSelectedJobDefinition.Jobs.Any());
 }