Exemplo n.º 1
0
        public IEnumerable <SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken)
        {
            //TextExtent extent;
            APICheckerWindowTaskProvider taskProvider = APICheckerWindowTaskProvider.GetTaskProvider();

            if (taskProvider == null)
            {
                return(Enumerable.Empty <SuggestedActionSet>());
            }

            int line = range.Start.GetContainingLine().LineNumber;

            foreach (Microsoft.VisualStudio.Shell.Task task in taskProvider.Tasks)
            {
                if ((task.Line == line) && (task is APICheckerTask))
                {
                    if (task is NeedsPrivilegeTask)
                    {
                        var addPrivilegeAction = new AddPrivilegeAction((NeedsPrivilegeTask)task);
                        return(new SuggestedActionSet[] { new SuggestedActionSet(
                                                              "addPrivilegeAction",
                                                              new ISuggestedAction[] { addPrivilegeAction },
                                                              "addPrivilegeAction",
                                                              SuggestedActionSetPriority.None,
                                                              null) });
                    }
                    //TODO: Handle Unused Privilege QuickFix
                }
            }

            return(Enumerable.Empty <SuggestedActionSet>());
        }
Exemplo n.º 2
0
        public void Invoke(CancellationToken cancellationToken)
        {
            xmlDoc.Save(m_task.GetManifestFilePath());
            APICheckerWindowTaskProvider taskProvider = APICheckerWindowTaskProvider.GetTaskProvider();
            List <NeedsPrivilegeTask>    removedTasks = new List <NeedsPrivilegeTask>();
            TaskCollection Tasks      = APICheckerWindowTaskProvider.GetTaskProvider().Tasks;
            List <string>  privileges = m_task.GetRequiredPrivileges().ToList();

            foreach (var task in Tasks)
            {
                if (task is NeedsPrivilegeTask)
                {
                    NeedsPrivilegeTask privTask = (NeedsPrivilegeTask)task;
                    int initPrivilegeCount      = privTask.GetRequiredPrivileges().Count;
                    foreach (var privilge in privileges)
                    {
                        if (privTask.GetRequiredPrivileges().Contains(privilge))
                        {
                            privTask.GetRequiredPrivileges().Remove(privilge);
                        }
                    }

                    int finalCount = privTask.GetRequiredPrivileges().Count;
                    if (initPrivilegeCount != finalCount)
                    {
                        if (finalCount != 0)
                        {
                            taskProvider.ReportMissingPrivileges(privTask.GetRequiredPrivileges(), privTask.ApiName,
                                                                 privTask.Line, privTask.Column, privTask.FileName, privTask.GetManifestFilePath());
                        }

                        removedTasks.Add(privTask);
                    }
                }
            }

            foreach (var task in removedTasks)
            {
                Tasks.Remove(task);
            }
        }
Exemplo n.º 3
0
        public Task <bool> HasSuggestedActionsAsync(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken)
        {
            int line = range.Start.GetContainingLine().LineNumber;

            return(Task.Factory.StartNew(() =>
            {
                APICheckerWindowTaskProvider taskProvider = APICheckerWindowTaskProvider.GetTaskProvider();
                if (taskProvider == null)
                {
                    return false;
                }

                foreach (Microsoft.VisualStudio.Shell.Task task in taskProvider.Tasks)
                {
                    if (task.Line == line)
                    {
                        return true;
                    }
                }

                return false;
            }));
        }