blob: 08d99d792e06237f27e10bac7b9aa2c2200add82 [file] [log] [blame]
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;
}
}