Exemplo n.º 1
0
        /// <summary>
        /// Handles the rebinding of the active document.
        /// </summary>
        /// <returns>The new uri for the document.</returns>
        private Uri HandleDocumentRebind()
        {
            Uri ans = null;
            ITeamProjectPickerPresenter projectPickerPresenter = projectPickerPresenter = this.Manager.ActiveContainer.Resolve <ITeamProjectPickerPresenter>();

            ans = projectPickerPresenter.ChooseTeamProjectCollection();
            return(ans);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Handles the <see cref="ILayoutDesignerPresenter.Connect"/> event.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The event arguments.</param>
        private void HandleLayoutDesignerPresenterConnect(object sender, EventArgs e)
        {
            this.Logger.Log(TraceEventType.Information, "Flow controller HandleLayoutDesignerPresenterConnect called");
            ITeamProjectPickerPresenter projectPickerPresenter = this.Manager.ActiveContainer.Resolve <ITeamProjectPickerPresenter>();
            ITeamProject teamProject = projectPickerPresenter.ChooseTeamProject();

            if (teamProject != null)
            {
                projectPickerPresenter.SaveTeamProject();
            }
        }
        public void InitializeTest()
        {
            this.container = new UnityContainer();

            this.mockPickerView = TestHelper.CreateAndRegisterMock <ITeamProjectPickerView>(this.container);
            this.mockDocument   = TestHelper.CreateAndRegisterMock <ITeamProjectDocument>(this.container);
            this.mockDocument.SetupAllProperties();
            this.mockFactory      = TestHelper.CreateAndRegisterMock <IFactory>(this.container);
            this.mockWaitNotifier = TestHelper.CreateAndRegisterMock <IWaitNotifier>(this.container);

            this.sut = this.container.Resolve <TeamProjectPickerPresenter>();
        }
 public void TeamProjectPickerPresenterConstructorThrowsExceptionIfNullViewIsPassed()
 {
     TestHelper.TestForArgumentNullException(() => this.sut = new TeamProjectPickerPresenter(null, this.mockDocument.Object, this.mockFactory.Object, this.mockWaitNotifier.Object), "pickerView");
 }
Exemplo n.º 5
0
        private void HandleTeamRibbonImport(object sender, System.EventArgs e)
        {
            this.Logger.Log(TraceEventType.Information, "Flow controller HandleTeamRibbonImport called");
            Debug.Assert(this.Manager.ActiveContainer != null, "There should be an active container in the team project document manager");
            Debug.Assert(this.Manager.ActiveDocument != null, "There should be an active document in the team project document manager");
            ITeamProject teamProject = null;
            ITeamProjectPickerPresenter projectPickerPresenter = null;

            if (!this.Manager.ActiveDocument.IsInsertable)
            {
                this.TeamRibbonPresenter.DisplayError(FlowControllerResources.DocumentNotInsertable, string.Empty);
            }
            else if (!this.Manager.ActiveDocument.IsConnected)
            {
                projectPickerPresenter = this.Manager.ActiveContainer.Resolve <ITeamProjectPickerPresenter>();
                teamProject            = projectPickerPresenter.ChooseTeamProject();
            }
            else
            {
                teamProject = this.Manager.ActiveDocument.TeamProject;
            }

            if (teamProject != null)
            {
                this.Manager.ActiveContainer.RegisterInstance <ITeamProject>(teamProject);
                IWorkItemQueryAndLayoutPickerWizardPresenter workItemAndLayoutPickerWizardPresenter = this.Manager.ActiveContainer.Resolve <IWorkItemQueryAndLayoutPickerWizardPresenter>();
                workItemAndLayoutPickerWizardPresenter.Initialise();
                workItemAndLayoutPickerWizardPresenter.Start();
                QueryAndLayoutInformation queryAndLayout = workItemAndLayoutPickerWizardPresenter.QueryAndLayout;
                if (queryAndLayout != null)
                {
                    CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                    TaskScheduler           scheduler = this.UnityContainer.Resolve <TaskScheduler>();

                    Task <WorkItemTree> runQueryTask = new Task <WorkItemTree>(
                        () =>
                    {
                        this.Logger.Log(TraceEventType.Information, "Starting query for work items");
                        WorkItemTree ans = teamProject.QueryRunner.QueryForWorkItems(queryAndLayout.Query, cancellationTokenSource.Token);
                        this.Logger.Log(TraceEventType.Information, "Finished querying for work items");
                        return(ans);
                    },
                        cancellationTokenSource.Token);

                    Task queryErrorTask = runQueryTask.ContinueWith(
                        antecedent =>
                    {
                        this.Logger.Log(TraceEventType.Error, "Query execution failed: {0}", antecedent.Exception.InnerException.Message);
                    },
                        cancellationTokenSource.Token,
                        TaskContinuationOptions.OnlyOnFaulted,
                        scheduler);

                    Task queryDoneTask = runQueryTask.ContinueWith(
                        (antecedent) =>
                    {
                        this.Logger.Log(TraceEventType.Information, "Adding work items to document");
                        this.TeamRibbonPresenter.UpdateCancellableOperation(
                            FlowControllerResources.AddingWorkItemsToDocument);

                        if (projectPickerPresenter != null)
                        {
                            projectPickerPresenter.SaveTeamProject();
                        }

                        workItemAndLayoutPickerWizardPresenter.SaveQueryAndLayout();
                        this.Manager.ActiveDocument.SaveWorkItems(antecedent.Result, queryAndLayout.Layout.FieldNames.ToArray(), cancellationTokenSource.Token);
                        this.Manager.ActiveDocument.MapWorkItemsIntoDocument(queryAndLayout.Layout, queryAndLayout.Index, cancellationTokenSource.Token);
                        this.Logger.Log(TraceEventType.Information, "Finished adding work items to document");
                    },
                        cancellationTokenSource.Token,
                        TaskContinuationOptions.OnlyOnRanToCompletion,
                        scheduler);

                    this.AddFinalErrorHandlingTask(scheduler, runQueryTask, queryErrorTask, queryDoneTask);

                    runQueryTask.Start(scheduler);
                    this.TeamRibbonPresenter.StartCancellableOperation(FlowControllerResources.StartQueryExecution, cancellationTokenSource);
                }
            }

            this.TeamRibbonPresenter.UpdateState();
        }