/// <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); } }