Esempio n. 1
0
        public void RefreshProjectDataClick(ProteinUpdateType type)
        {
            var result = _messageBoxView.AskYesNoQuestion(_view, "Are you sure?  This operation cannot be undone.", Core.Application.NameAndVersion);

            if (result == DialogResult.No)
            {
                return;
            }

            var progress = new TaskSchedulerProgress <harlam357.Core.ComponentModel.ProgressChangedEventArgs>();
            var cancellationTokenSource = new CancellationTokenSource();
            var projectDownloadView     = _viewFactory.GetProgressDialogAsync();

            projectDownloadView.Icon = Properties.Resources.hfm_48_48;
            projectDownloadView.Text = "Updating Project Data";
            projectDownloadView.CancellationTokenSource = cancellationTokenSource;
            projectDownloadView.Progress = progress;

            projectDownloadView.Shown += (s, args) =>
            {
                var  uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
                long updateArg       = 0;
                if (type == ProteinUpdateType.Project)
                {
                    updateArg = _model.SelectedHistoryEntry.ProjectID;
                }
                else if (type == ProteinUpdateType.Id)
                {
                    updateArg = _model.SelectedHistoryEntry.ID;
                }
                _database.UpdateProteinDataAsync(type, updateArg, cancellationTokenSource.Token, progress)
                .ContinueWith(t =>
                {
                    if (t.IsFaulted)
                    {
                        var ex = t.Exception.Flatten().InnerException;
                        Logger.Error(ex.Message, ex);
                        _messageBoxView.ShowError(_view, ex.Message, Core.Application.NameAndVersion);
                    }
                    else
                    {
                        _model.ResetBindings(true);
                    }
                    projectDownloadView.Close();
                }, uiTaskScheduler);
            };
            projectDownloadView.ShowDialog(_view);
            _viewFactory.Release(projectDownloadView);
        }
Esempio n. 2
0
        public void Security_Hash_File_WithProgress_Test()
        {
            string hashHex;

             bool progressRaised = false;
             var progress = new TaskSchedulerProgress<int>(new CurrentThreadTaskScheduler(), value => progressRaised = true);
             using (var h1 = new Hash(HashProvider.CRC32))
             using (var stream = File.OpenRead(Path.Combine(Environment.CurrentDirectory, @"TestFiles\gettysburg.txt")))
             {
            hashHex = h1.Calculate(stream, progress).Bytes.ToHex();
             }
             Assert.AreEqual(hashHex, "E37F6423");
             Assert.IsTrue(progressRaised);

             progressRaised = false;
             progress = new TaskSchedulerProgress<int>(new CurrentThreadTaskScheduler(), value => progressRaised = true);
             using (var h2 = new Hash(HashProvider.MD5))
             using (var stream = File.OpenRead(Path.Combine(Environment.CurrentDirectory, @"TestFiles\sample.doc")))
             {
            hashHex = h2.Calculate(stream, progress).Bytes.ToHex();
             }
             Assert.AreEqual(hashHex, "4F32AB797F0FCC782AAC0B4F4E5B1693");
             Assert.IsTrue(progressRaised);
        }
Esempio n. 3
0
      public void ToolsDownloadProjectsClick()
      {
         _proteinService.ResetRefreshParameters();

         var progress = new TaskSchedulerProgress<harlam357.Core.ComponentModel.ProgressChangedEventArgs>();
         var projectDownloadView = _viewFactory.GetProjectDownloadDialog();
         projectDownloadView.Progress = progress;

         Task<IEnumerable<ProteinLoadInfo>> refreshTask = null;
         projectDownloadView.Shown += (s, args) =>
         {
            var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
            refreshTask = _proteinService.RefreshAsync(progress);
            refreshTask
               .ContinueWith(t => _messageBoxView.ShowError(projectDownloadView, t.Exception.Flatten().InnerException.Message, Core.Application.NameAndVersion),
                     CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, uiTaskScheduler)
               .ContinueWith(t => projectDownloadView.Close(), uiTaskScheduler);
         };
         projectDownloadView.ShowDialog(_view);
         _viewFactory.Release(projectDownloadView);

         if (refreshTask.Status == TaskStatus.RanToCompletion && refreshTask.Result != null)
         {
            var proteinChanges = refreshTask.Result.Where(x => x.Result != ProteinLoadResult.NoChange).ToList();
            if (proteinChanges.Count > 0)
            {
               _retrievalModel.RunClientRetrieval();
               using (var dlg = new ProteinLoadResultsDialog())
               {
                  dlg.DataBind(proteinChanges);
                  dlg.ShowDialog(_view);
               }
            }
         }
      }
Esempio n. 4
0
      public void RefreshProjectDataClick(ProteinUpdateType type)
      {
         var result = _messageBoxView.AskYesNoQuestion(_view, "Are you sure?  This operation cannot be undone.", Core.Application.NameAndVersion);
         if (result == DialogResult.No)
         {
            return;
         }

         var progress = new TaskSchedulerProgress<harlam357.Core.ComponentModel.ProgressChangedEventArgs>();
         var cancellationTokenSource = new CancellationTokenSource();
         var projectDownloadView = _viewFactory.GetProgressDialogAsync();
         projectDownloadView.Icon = Properties.Resources.hfm_48_48;
         projectDownloadView.Text = "Updating Project Data";
         projectDownloadView.CancellationTokenSource = cancellationTokenSource;
         projectDownloadView.Progress = progress;

         projectDownloadView.Shown += (s, args) =>
         {
            var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
            long updateArg = 0;
            if (type == ProteinUpdateType.Project)
            {
               updateArg = _model.SelectedHistoryEntry.ProjectID;
            }
            else if (type == ProteinUpdateType.Id)
            {
               updateArg = _model.SelectedHistoryEntry.ID;
            }
            _database.UpdateProteinDataAsync(type, updateArg, cancellationTokenSource.Token, progress)
               .ContinueWith(t =>
               {
                  if (t.IsFaulted)
                  {
                     var ex = t.Exception.Flatten().InnerException;
                     Logger.Error(ex.Message, ex);
                     _messageBoxView.ShowError(_view, ex.Message, Core.Application.NameAndVersion);
                  }
                  else
                  {
                     _model.ResetBindings(true);
                  }
                  projectDownloadView.Close();
               }, uiTaskScheduler);
         };
         projectDownloadView.ShowDialog(_view);
         _viewFactory.Release(projectDownloadView);
      }