예제 #1
0
 public RepositorySelectionPage(ScmRepositoryProvider repoProvider)
     : this()
 {
     this.repoProvider = repoProvider;
     if (this.repoProvider != null)
     {
         Name = string.Format("ProviderPage_{0}", this.repoProvider.Id);
     }
 }
예제 #2
0
 /// <summary>
 /// Tries to find a registered provider with the given name.
 /// </summary>
 /// <param name="id">Repository provider's identifier</param>
 /// <param name="repoProvider">[out] Repository provider instance if found</param>
 /// <remarks>This call DOES NOT trigger provider package initialization.</remarks>
 /// <returns>true if the lookup is successful, false otherwise</returns>
 public bool TryGetRepositoryProvider(string id, out ScmRepositoryProvider repoProvider)
 {
     repoProvider = null;
     if (_nameProviderMap != null && _nameProviderMap.Count > 0)
     {
         return(_nameProviderMap.TryGetValue(id, out repoProvider));
     }
     return(false);
 }
예제 #3
0
        public override ScmRepositorySelectionControl CreateSelectionControl()
        {
            ScmRepositoryProvider dlg = Target;

            if (dlg != null)
            {
                return(dlg.CreateSelectionControl());
            }
            return(null);
        }
예제 #4
0
 public override WizardPage GetNextPage(WizardPage page)
 {
     if (page == this.providerSelectionPage)
     {
         ScmRepositoryProvider repoProvider = this.providerSelectionPage.SelectedRepositoryProvider;
         if (repoProvider != null)
         {
             if (this.repositorySelectionPages == null)
             {
                 this.repositorySelectionPages = new Dictionary <string, RepositorySelectionPage>();
             }
             string providerId = repoProvider.Id;
             RepositorySelectionPage result = null;
             if (!this.repositorySelectionPages.TryGetValue(providerId, out result))
             {
                 result = new RepositorySelectionPage(repoProvider);
                 Pages.Add(result);
                 this.repositorySelectionPages.Add(providerId, result);
             }
             return(result);
         }
     }
     return(null);
 }
예제 #5
0
 public RepositoryProviderListViewItem(SmartListView view, ScmRepositoryProvider repoProvider)
     : base(view)
 {
     Tag = repoProvider;
     Refresh();
 }
예제 #6
0
        public override void OnFinish(System.ComponentModel.CancelEventArgs e)
        {
            WizardMessage newMsg = null;

            this.resultUri = null;
            EnablePageAndButtons(false);
            ScmUserNamePasswordEventArgs credentialsArgs = null;

            try
            {
                Uri uri = this.providerSelectionPage.Uri;
                if (uri == null && this.repositorySelectionPages != null)
                {
                    ScmRepositoryProvider repoProvider = this.providerSelectionPage.SelectedRepositoryProvider;
                    if (repoProvider != null)
                    {
                        RepositorySelectionPage repoSelectionPage;
                        if (this.repositorySelectionPages.TryGetValue(repoProvider.Id, out repoSelectionPage))
                        {
                            uri = repoSelectionPage.Uri;
                            if (uri != null)
                            {
                                credentialsArgs = new ScmUserNamePasswordEventArgs(uri.AbsoluteUri);
                                repoSelectionPage.FillUsernamePassword(credentialsArgs);
                                if (credentialsArgs.Cancel)
                                {
                                    credentialsArgs = null;
                                }
                            }
                        }
                    }
                }
                bool cancel = false;
                if (uri == null)
                {
                    cancel = true;
                }
                else
                {
                    Exception exc = null;
                    if (credentialsArgs != null)
                    {
                        try
                        {
                            ProgressRunnerArgs runnerArgs = new ProgressRunnerArgs();
                            runnerArgs.CreateLog = false;
                            // Make sure username and password is saved for future use
                            ProgressRunnerResult result = Context.GetService <IProgressRunner>().RunModal("Checking repository",
                                                                                                          runnerArgs,
                                                                                                          delegate(object sender, ProgressWorkerArgs ee)
                                                                                                          { EnsureCredentials(credentialsArgs); });
                            cancel = !(result.Succeeded || result.Exception == null);
                            exc    = result.Exception;
                        }
                        catch (Exception runnere)
                        {
                            cancel = true;
                            exc    = runnere.InnerException == null ? runnere : runnere.InnerException;
                        }
                    }
                    // TODO (BA) Should we validate here?

                    /*
                     * try
                     * {
                     *  ProgressRunnerArgs runnerArgs = new ProgressRunnerArgs();
                     *  runnerArgs.CreateLog = false;
                     *  // Check the validity of the specified repository location using IProgressRunner
                     *  ProgressRunnerResult result = Context.GetService<IProgressRunner>().RunModal("Checking URI",
                     *      runnerArgs,
                     *      delegate(object sender, ProgressWorkerArgs ee)
                     *      { CheckResult(uri); });
                     *  cancel = !(result.Succeeded || result.Exception == null);
                     *  exc = result.Exception;
                     * }
                     * catch (Exception runnere)
                     * {
                     *  cancel = true;
                     *  exc = runnere.InnerException == null ? runnere : runnere.InnerException;
                     * }
                     */
                    if (cancel && exc != null)
                    {
                        newMsg = new WizardMessage(exc.Message, WizardMessage.MessageType.Error);
                    }
                }
                this.resultUri = cancel ? null : uri;
                DialogResult   = cancel ? System.Windows.Forms.DialogResult.None : System.Windows.Forms.DialogResult.OK;
                if (CurrentPage.Message != newMsg)
                {
                    CurrentPage.Message = newMsg;
                    UpdateMessage();
                }
                e.Cancel = cancel;
            }
            finally
            {
                EnablePageAndButtons(true);
            }
        }