// ------------------------------------------------------------------- /// <summary> /// Displays the submission wizard with the specified array of /// submittable items as its initial selection. /// </summary> /// <param name="items"> /// The initial selection of submittable items. /// </param> private void ShowSubmissionWizard(ISubmittableItem[] items) { IntPtr owningHwnd; IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); uiShell.GetDialogOwnerHwnd(out owningHwnd); HWndWrapper windowWrapper = new HWndWrapper(owningHwnd); SubmissionEngine engine = new SubmissionEngine(); SubmitterOptionsPage options = (SubmitterOptionsPage) GetDialogPage(typeof(SubmitterOptionsPage)); Exception openException = null; BackgroundWorkerDialog dlg = new BackgroundWorkerDialog( Messages.LoadingSubmissionTargetsProgress, true, delegate(object sender, DoWorkEventArgs e) { BackgroundWorker worker = (BackgroundWorker)sender; try { Uri uri = new Uri(options.SubmissionDefinitionsUri); engine.OpenDefinitions(uri); } catch (Exception ex) { openException = ex; } }); dlg.ShowDialog(windowWrapper); if (engine.Root != null) { SubmitterWizard wizard = new SubmitterWizard(engine, this, items, options.DefaultUsername); wizard.ShowDialog(windowWrapper); if (engine.HasResponse) { DisplaySubmissionResponse(engine); } } else { if (openException != null) { MessageBox.Show(windowWrapper, String.Format(Messages.LoadingSubmissionTargetsError, openException.Message), Messages.LoadingSubmissionTargetsErrorTitle, MessageBoxButtons.OK); } else { MessageBox.Show(windowWrapper, Messages.LoadingSubmissionTargetsUnknownError, Messages.LoadingSubmissionTargetsErrorTitle, MessageBoxButtons.OK); } } }
// ------------------------------------------------------------------- /// <summary> /// Performs the actual submission of the projects. /// </summary> private void DoSubmission() { TargetTreeNode node = (TargetTreeNode)submissionTargetsTree.SelectedNode; SubmissionManifest parameters = new SubmissionManifest(); parameters.Assignment = (ITargetAssignment)node.Target; parameters.Username = usernameField.Text; parameters.Password = passwordField.Text; parameters.SubmittableItems = submittables; Exception exception = null; BackgroundWorkerDialog dialog = new BackgroundWorkerDialog( Messages.SendingSubmission, true, delegate(object sender, DoWorkEventArgs e) { try { engine.SubmitProject(parameters); } catch(Exception ex) { exception = ex; } }); dialog.ShowDialog(this); if(exception == null) { string message = engine.HasResponse ? Messages.ResponseClose : Messages.NoResponseClose; SetSubmissionResults(SubmissionResultCode.Success, message); } else if (exception is RequiredFilesMissingException) { RequiredFilesMissingException e = (RequiredFilesMissingException)exception; StringBuilder builder = new StringBuilder(); builder.Append(Messages.WizardMissingFilesPreamble); foreach (string file in e.MissingFiles) { builder.Append(String.Format( Messages.WizardMissingFilesListItem, file)); } SetSubmissionResults(SubmissionResultCode.Incomplete, builder.ToString()); } else if (exception is ProtocolNotRegisteredException) { ProtocolNotRegisteredException e = (ProtocolNotRegisteredException)exception; SetSubmissionResults(SubmissionResultCode.Error, String.Format(Messages.ProtocolNotFound, e.Scheme)); } else { SetSubmissionResults(SubmissionResultCode.Error, exception.Message); } }
// ------------------------------------------------------------------- /// <summary> /// Performs the actual submission of the projects. /// </summary> private void DoSubmission() { TargetTreeNode node = (TargetTreeNode)submissionTargetsTree.SelectedNode; SubmissionManifest parameters = new SubmissionManifest(); parameters.Assignment = (ITargetAssignment)node.Target; parameters.Username = usernameField.Text; parameters.Password = passwordField.Text; parameters.SubmittableItems = submittables; Exception exception = null; BackgroundWorkerDialog dialog = new BackgroundWorkerDialog( Messages.SendingSubmission, true, delegate(object sender, DoWorkEventArgs e) { try { engine.SubmitProject(parameters); } catch (Exception ex) { exception = ex; } }); dialog.ShowDialog(this); if (exception == null) { string message = engine.HasResponse ? Messages.ResponseClose : Messages.NoResponseClose; SetSubmissionResults(SubmissionResultCode.Success, message); } else if (exception is RequiredFilesMissingException) { RequiredFilesMissingException e = (RequiredFilesMissingException)exception; StringBuilder builder = new StringBuilder(); builder.Append(Messages.WizardMissingFilesPreamble); foreach (string file in e.MissingFiles) { builder.Append(String.Format( Messages.WizardMissingFilesListItem, file)); } SetSubmissionResults(SubmissionResultCode.Incomplete, builder.ToString()); } else if (exception is ProtocolNotRegisteredException) { ProtocolNotRegisteredException e = (ProtocolNotRegisteredException)exception; SetSubmissionResults(SubmissionResultCode.Error, String.Format(Messages.ProtocolNotFound, e.Scheme)); } else { SetSubmissionResults(SubmissionResultCode.Error, exception.Message); } }