Beispiel #1
0
        /// <summary>
        /// Create a new local project.
        /// </summary>
        public override void Execute()
        {
            SalesForceCredential credential = null;

            // get credentials for new project.
            EditSalesForceCredentialWindow dlg = new EditSalesForceCredentialWindow();

            dlg.Title = "New Project";
            while (App.ShowDialog(dlg))
            {
                try
                {
                    using (App.Wait("Verifying credentials..."))
                    {
                        credential = dlg.Credential;
                        SalesForceClient.TestLogin(credential);
                    }
                    break;
                }
                catch (Exception err)
                {
                    App.MessageUser(err.Message, "Login Failed", MessageBoxImage.Error, new string[] { "OK" });

                    dlg            = new EditSalesForceCredentialWindow();
                    dlg.Title      = "New Project";
                    dlg.Credential = credential;
                }
            }

            // create the new project or open an existing project that has the same credentials
            if (credential != null)
            {
                Project project = null;
                if (Project.ProjectExists(credential.Username))
                {
                    project            = Project.OpenProject(credential.Username);
                    project.Credential = credential;
                }
                else
                {
                    project = new Project(credential);
                }

                project.Save();

                App.Instance.SalesForceApp.OpenProject(project);
            }
        }
        /// <summary>
        /// Open a new project.
        /// </summary>
        /// <param name="project">The project to open.</param>
        public void OpenProject(Project project)
        {
            if (project == null)
            {
                throw new ArgumentNullException("project");
            }

            // check for existing project
            if (CurrentProject != null)
            {
                if (App.MessageUser("The current project must be closed before opening a new one.  Do you want to close the current project?",
                                    "Close Project",
                                    MessageBoxImage.Warning,
                                    new string[] { "Yes", "No" }) != "Yes")
                {
                    return;
                }

                CloseProject();
            }

            // test the credential
            SalesForceCredential credential = project.Credential;

            while (true)
            {
                try
                {
                    using (App.Wait("Verifying credentials..."))
                        SalesForceClient.TestLogin(credential);

                    using (App.Wait("Initializing project..."))
                    {
                        project.Repository.AuthorName  = project.Client.User.Name;
                        project.Repository.AuthorEmail = project.Client.UserEmail;
                        project.LoadSymbolsAsync(false);
                    }

                    break;
                }
                catch (Exception err)
                {
                    App.MessageUser(err.Message, "Login Failed", MessageBoxImage.Error, new string[] { "OK" });

                    EditSalesForceCredentialWindow dlg = new EditSalesForceCredentialWindow();
                    dlg.Credential = credential;
                    dlg.Title      = "Enter credentials";

                    if (!App.ShowDialog(dlg))
                    {
                        return;
                    }

                    credential         = dlg.Credential;
                    project.Credential = credential;
                    project.Save();
                }
            }

            // open the project
            using (App.Wait("Opening project..."))
            {
                CurrentProject            = project;
                App.Instance.SessionTitle = project.Credential.Username;

                App.Instance.Navigation.Nodes.Add(new SourceFolderNode(project));
                App.Instance.Navigation.Nodes.Add(new DataFolderNode(project));
                App.Instance.Navigation.Nodes.Add(new LocalFolderNode(project));

                App.Instance.Menu.UpdateFunctions();
                App.Instance.ToolBar.UpdateFunctions();

                App.Instance.GetFunction <InsertSnippetContainerFunction>().Refresh(App.Instance.Menu);
            }
        }