IEnumerator ShowCreateNewProjectPopupAsync()
        {
            while (!_windowInitializer.IsInitialized)
            {
                yield return(null);
            }

            var choices = ShowPopup();

            yield return(choices);

            if (choices.Current == null)
            {
                // User Cancelled
                yield break;
            }

            var projName          = choices.Current.NewProjectName;
            var duplicateSettings = choices.Current.DuplicateSettings;

            yield return(_commandHandler.ProcessPrjCommand(
                             "Creating Project '{0}'".Fmt(projName), PrjHelper.CreateProjectAsync(projName, duplicateSettings)));

            yield return(_commandHandler.ProcessPrjCommand(
                             "Initializing directory links", PrjHelper.UpdateLinksAsyncForProject(projName)));

            yield return(_commandHandler.ProcessPrjCommand(
                             "Opening Unity", PrjHelper.OpenUnityForProjectAsync(projName)));

            EditorApplication.Exit(0);
        }
        IEnumerator ShowCreateNewProjectPopupAsync()
        {
            while (!_windowInitializer.IsInitialized)
            {
                yield return(null);
            }

            var userInput = _view.PromptForInput("Enter new project name:", "Untitled");

            yield return(userInput);

            if (userInput.Current == null)
            {
                // User Cancelled
                yield break;
            }

            var projName = userInput.Current;

            yield return(_commandHandler.ProcessPrjCommand(
                             "Creating Project '{0}'".Fmt(projName), PrjHelper.CreateProjectAsync(projName)));

            yield return(_commandHandler.ProcessPrjCommand(
                             "Initializing directory links", PrjHelper.UpdateLinksAsyncForProject(projName)));

            yield return(_commandHandler.ProcessPrjCommand(
                             "Opening Unity", PrjHelper.OpenUnityForProjectAsync(projName)));

            EditorApplication.Exit(0);
        }