| package com.intellij.coverage; |
| |
| import com.intellij.coverage.view.CoverageView; |
| import com.intellij.coverage.view.CoverageViewManager; |
| import com.intellij.openapi.progress.ProgressIndicator; |
| import com.intellij.openapi.progress.ProgressManager; |
| import com.intellij.openapi.progress.Task; |
| import com.intellij.openapi.project.Project; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author Roman.Chernyatchik |
| */ |
| public abstract class BaseCoverageAnnotator implements CoverageAnnotator { |
| |
| private final Project myProject; |
| |
| @Nullable |
| protected abstract Runnable createRenewRequest(@NotNull final CoverageSuitesBundle suite, @NotNull final CoverageDataManager dataManager); |
| |
| public BaseCoverageAnnotator(final Project project) { |
| myProject = project; |
| } |
| |
| public void onSuiteChosen(CoverageSuitesBundle newSuite) { |
| } |
| |
| public void renewCoverageData(@NotNull final CoverageSuitesBundle suite, @NotNull final CoverageDataManager dataManager) { |
| final Runnable request = createRenewRequest(suite, dataManager); |
| if (request != null) { |
| if (myProject.isDisposed()) return; |
| ProgressManager.getInstance().run(new Task.Backgroundable(myProject, "Loading coverage data...", false) { |
| @Override |
| public void run(@NotNull ProgressIndicator indicator) { |
| request.run(); |
| } |
| |
| @Override |
| public void onSuccess() { |
| final CoverageView coverageView = CoverageViewManager.getInstance(myProject).getToolwindow(suite); |
| if (coverageView != null) { |
| coverageView.updateParentTitle(); |
| } |
| } |
| }); |
| } |
| } |
| |
| public Project getProject() { |
| return myProject; |
| } |
| |
| public static class FileCoverageInfo { |
| public int totalLineCount; |
| public int coveredLineCount; |
| } |
| |
| public static class DirCoverageInfo extends FileCoverageInfo { |
| public int totalFilesCount; |
| public int coveredFilesCount; |
| } |
| } |