//  -------------------------------------------------------------------
        /// <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);
            }
        }
Esempio n. 3
0
        //  -------------------------------------------------------------------
        /// <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);
            }
        }