private void PushApp() { Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.PushApp, (confirmed) => { if (confirmed) { PushViewModel viewModel = null; Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, vm => viewModel = vm)); var worker = new BackgroundWorker { WorkerReportsProgress = true }; SetProgressTitle("Push Application"); worker.ProgressChanged += WorkerProgressChanged; worker.DoWork += (s, e) => { worker.ReportProgress(10, "Pushing Application: " + viewModel.Name); ProviderResponse <bool> result = provider.Push(viewModel.SelectedCloud, viewModel.Name, viewModel.Url, Convert.ToUInt16(viewModel.Instances), viewModel.PushFromDirectory, Convert.ToUInt32(viewModel.SelectedMemory), viewModel.ApplicationServices.Select(provisionedService => provisionedService.Name).ToArray()); if (false == result.Response) { worker.ReportProgress(-1, result.Message); return; } ProviderResponse <Application> appResult = provider.GetApplication( new Application { Name = viewModel.Name }, viewModel.SelectedCloud); if (appResult.Response == null) { worker.ReportProgress(-1, appResult.Message); return; } e.Result = appResult.Response; }; worker.RunWorkerCompleted += (s, e) => { var result = e.Result as Application; Cloud cloud = provider.Clouds.SingleOrDefault((c) => c.ID == viewModel.SelectedCloud.ID); if (result != null) { cloud.Applications.Add(result); } Messenger.Default.Send(new ProgressMessage(100, "Application Pushed.")); }; worker.RunWorkerAsync(); Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.Progress, c => { })); } })); }
private void PushApplication(object sender, EventArgs e) { Project project = vsMonitorSelection.GetActiveProject(); if (project != null) { var cloudGuid = GetCurrentCloudGuid(project); var projectDirectories = GetProjectDirectories(project); Messenger.Default.Register <NotificationMessageAction <Guid> >(this, message => { if (message.Notification.Equals(Messages.SetPushAppData)) { message.Execute(cloudGuid); } }); Messenger.Default.Register <NotificationMessageAction <string> >(this, message => { if (message.Notification.Equals(Messages.SetPushAppDirectory)) { message.Execute(projectDirectories.DeployFromPath); } }); var window = new Push(); var helper = new WindowInteropHelper(window); helper.Owner = (IntPtr)(dte.MainWindow.HWnd); var result = window.ShowDialog(); if (result.GetValueOrDefault()) { PushViewModel modelData = null; Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, model => modelData = model)); SetCurrentCloudGuid(project, modelData.SelectedCloud.ID); List <string> services = new List <string>(); foreach (var provisionedService in modelData.ApplicationServices) { services.Add(provisionedService.Name); } PerformAction("Push Application", project, modelData.SelectedCloud, projectDirectories, (c, d) => c.Push(modelData.Name, modelData.Url, Convert.ToUInt16(modelData.Instances), d, Convert.ToUInt32(modelData.SelectedMemory), services.ToArray())); } } }