Beispiel #1
0
        //TODO.. Move this and Commit. I sorta hate it all!
        internal async Task SwitchCommand(BranchPickerResult result)
        {
            if (!result.CreateBranch && !result.Switch)
            {
                return;
            }

            bool inError = false;
            var  branch  = result.BranchInfo;
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            SolutionExtensions.WriteMessageToOutputPane("Branch Operation Started");
            if (result.CreateBranch)
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                SolutionExtensions.WriteMessageToOutputPane("Creating Branch");
                //await status.SetMessage("Creating Branch");
                await TaskScheduler.Default;
                var branchResult = result.Repository.CreateBranch(result.BranchName);
                if (branchResult.Succeeded)
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    SolutionExtensions.WriteMessageToOutputPane("Branch: ' " + branchResult.Item.Name + "' Created");
                    branch = branchResult.Item;
                }
                else
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    inError = true;
                    //status.Hide();
                    SolutionExtensions.WriteMessageToOutputPane(branchResult.ErrorMessage);
                    MessageBox.Show(branchResult.ErrorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
            }
            if (result.Switch && !inError)
            {
                if (branch != null)
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    SolutionExtensions.WriteMessageToOutputPane("Switching Branch");
                    await TaskScheduler.Default;
                    var switchResult = result.Repository.Checkout(branch);
                    if (!switchResult.Succeeded)
                    {
                        await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                        inError = true;
                        SolutionExtensions.WriteMessageToOutputPane(switchResult.ErrorMessage);
                        MessageBox.Show(switchResult.ErrorMessage, "Error", MessageBoxButton.OK,
                                        MessageBoxImage.Exclamation);
                    }
                }
            }

            if (!inError)
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                SolutionExtensions.WriteMessageToOutputPane("Branch Operation Complete");
                await UpdateRepositoryName();
            }
        }
Beispiel #2
0
 internal async Task OnSwitchCommand(BranchPickerResult result)
 {
     await control.SwitchCommand(result);
 }