From: Anna.Kozlova Date: Wed, 12 Oct 2016 17:29:21 +0000 (+0200) Subject: try to reuse coverage infrastructure: X-Git-Tag: appcode/171.200~3 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=11213da218d7d0346cb8e1213f5be74d8de5810a try to reuse coverage infrastructure: inherit from coverageDataManager so profile suites would be collected and current suite can be tracked; provide custom suites bundle to paint gutter icons; problems: 1. data is not loaded! 2. mutual coverage/profile would be shown at the same position, won't exclude each other --- diff --git a/plugins/coverage-common/src/com/intellij/coverage/CoverageLineMarkerRenderer.java b/plugins/coverage-common/src/com/intellij/coverage/CoverageLineMarkerRenderer.java index e039a74712e0..29e1a4062fb3 100644 --- a/plugins/coverage-common/src/com/intellij/coverage/CoverageLineMarkerRenderer.java +++ b/plugins/coverage-common/src/com/intellij/coverage/CoverageLineMarkerRenderer.java @@ -70,7 +70,7 @@ import java.util.TreeMap; /** * @author ven */ -public class CoverageLineMarkerRenderer implements LineMarkerRendererEx, ActiveGutterRenderer { +public class CoverageLineMarkerRenderer implements ActiveGutterRenderer, LineMarkerRendererWithErrorStripe { private static final int THICKNESS = 8; private final TextAttributesKey myKey; private final String myClassName; diff --git a/plugins/coverage-common/src/com/intellij/coverage/CoverageSuitesBundle.java b/plugins/coverage-common/src/com/intellij/coverage/CoverageSuitesBundle.java index 15ee14ec430c..481f6009f356 100644 --- a/plugins/coverage-common/src/com/intellij/coverage/CoverageSuitesBundle.java +++ b/plugins/coverage-common/src/com/intellij/coverage/CoverageSuitesBundle.java @@ -14,6 +14,7 @@ import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.reference.SoftReference; +import com.intellij.rt.coverage.data.LineData; import com.intellij.rt.coverage.data.ProjectData; import com.intellij.util.ArrayUtilRt; import com.intellij.util.Function; @@ -22,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.Set; +import java.util.TreeMap; /** * User: anna @@ -117,6 +119,16 @@ public class CoverageSuitesBundle { return myEngine; } + public LineMarkerRendererWithErrorStripe getLineMarkerRenderer(int lineNumber, + @Nullable final String className, + final TreeMap lines, + final boolean coverageByTestApplicable, + @NotNull final CoverageSuitesBundle coverageSuite, + final Function newToOldConverter, + final Function oldToNewConverter, boolean subCoverageActive) { + return myEngine.getLineMarkerRenderer(lineNumber, className, lines, coverageByTestApplicable, coverageSuite, newToOldConverter, oldToNewConverter, subCoverageActive); + } + public CoverageAnnotator getAnnotator(Project project) { return myEngine.getCoverageAnnotator(project); } diff --git a/plugins/coverage-common/src/com/intellij/coverage/LineMarkerRendererWithErrorStripe.java b/plugins/coverage-common/src/com/intellij/coverage/LineMarkerRendererWithErrorStripe.java new file mode 100644 index 000000000000..32329ccfb8f8 --- /dev/null +++ b/plugins/coverage-common/src/com/intellij/coverage/LineMarkerRendererWithErrorStripe.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.coverage; + +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.markup.LineMarkerRendererEx; + +import java.awt.*; + +//todo +public interface LineMarkerRendererWithErrorStripe extends LineMarkerRendererEx { + Color getErrorStripeColor(Editor editor); +} diff --git a/plugins/coverage-common/src/com/intellij/coverage/SrcFileAnnotator.java b/plugins/coverage-common/src/com/intellij/coverage/SrcFileAnnotator.java index 5b8030c4519b..5c32427e05d0 100644 --- a/plugins/coverage-common/src/com/intellij/coverage/SrcFileAnnotator.java +++ b/plugins/coverage-common/src/com/intellij/coverage/SrcFileAnnotator.java @@ -510,7 +510,7 @@ public class SrcFileAnnotator implements Disposable { final TIntIntHashMap newLineMapping = getOldToNewLineMapping(date, editorBean); return newLineMapping != null ? newLineMapping.get(newLine.intValue()) : newLine.intValue(); }; - final CoverageLineMarkerRenderer markerRenderer = coverageSuite.getCoverageEngine() + final LineMarkerRendererWithErrorStripe markerRenderer = coverageSuite .getLineMarkerRenderer(line, className, executableLines, coverageByTestApplicable, coverageSuite, newToOldConverter, oldToNewConverter, CoverageDataManager.getInstance(myProject).isSubCoverageActive()); highlighter.setLineMarkerRenderer(markerRenderer);