| /* |
| * Copyright 2000-2013 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.openapi.editor.markup; |
| |
| import com.intellij.openapi.editor.RangeMarker; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.awt.*; |
| |
| /** |
| * Represents a range of text in the document which has specific markup (special text attributes, |
| * line marker, gutter icon, error stripe marker or line separator). |
| * |
| * @see MarkupModel#addRangeHighlighter(int, int, int, TextAttributes, HighlighterTargetArea) |
| * @see com.intellij.lang.annotation.Annotation |
| */ |
| public interface RangeHighlighter extends RangeMarker { |
| RangeHighlighter[] EMPTY_ARRAY = new RangeHighlighter[0]; |
| /** |
| * Returns the relative priority of the highlighter (higher priority highlighters can override |
| * lower priority ones; layer number values for standard IDEA highlighters are given in |
| * {@link HighlighterLayer} class). |
| * |
| * @return the highlighter priority. |
| */ |
| int getLayer(); |
| |
| /** |
| * Returns the value indicating whether the highlighter affects a range of text or a sequence of |
| * of entire lines in the specified range. |
| * |
| * @return the highlighter target area. |
| */ |
| @NotNull |
| HighlighterTargetArea getTargetArea(); |
| |
| /** |
| * Returns the text attributes used for highlighting. |
| * |
| * @return the attributes to use for highlighting, or null if the highlighter |
| * does not modify the text attributes. |
| */ |
| @Nullable |
| TextAttributes getTextAttributes(); |
| |
| /** |
| * Returns the renderer used for drawing line markers in the area covered by the |
| * highlighter, and optionally for processing mouse events over the markers. |
| * Line markers are drawn over the folding area and are used, for example, |
| * to highlight modified lines in files under source control. |
| * |
| * @return the renderer instance, or null if the highlighter does not add any line markers. |
| * @see ActiveGutterRenderer |
| */ |
| @Nullable |
| LineMarkerRenderer getLineMarkerRenderer(); |
| |
| /** |
| * Sets the renderer used for drawing line markers in the area covered by the |
| * highlighter, and optionally for processing mouse events over the markers. |
| * Line markers are drawn over the folding area and are used, for example, |
| * to highlight modified lines in files under source control. |
| * |
| * @param renderer the renderer instance, or null if the highlighter does not add any line markers. |
| * @see ActiveGutterRenderer |
| */ |
| void setLineMarkerRenderer(@Nullable LineMarkerRenderer renderer); |
| |
| |
| @Nullable |
| CustomHighlighterRenderer getCustomRenderer(); |
| |
| void setCustomRenderer(CustomHighlighterRenderer renderer); |
| /** |
| * Returns the renderer used for drawing gutter icons in the area covered by the |
| * highlighter. Gutter icons are drawn to the left of the folding area and can be used, |
| * for example, to mark implemented or overridden methods. |
| * |
| * @return the renderer instance, or null if the highlighter does not add any gutter icons. |
| */ |
| @Nullable |
| GutterIconRenderer getGutterIconRenderer(); |
| |
| /** |
| * Sets the renderer used for drawing gutter icons in the area covered by the |
| * highlighter. Gutter icons are drawn to the left of the folding area and can be used, |
| * for example, to mark implemented or overridden methods. |
| * |
| * @param renderer the renderer instance, or null if the highlighter does not add any gutter icons. |
| */ |
| void setGutterIconRenderer(@Nullable GutterIconRenderer renderer); |
| |
| /** |
| * Returns the color of the marker drawn in the error stripe in the area covered by the highlighter. |
| * |
| * @return the error stripe marker color, or null if the highlighter does not add any |
| * error stripe markers. |
| */ |
| @Nullable |
| Color getErrorStripeMarkColor(); |
| |
| /** |
| * Sets the color of the marker drawn in the error stripe in the area covered by the highlighter. |
| * |
| * @param color the error stripe marker color, or null if the highlighter does not add any |
| * error stripe markers. |
| */ |
| void setErrorStripeMarkColor(@Nullable Color color); |
| |
| /** |
| * Returns the object whose <code>toString()</code> method is called to get the text of the tooltip |
| * for the error stripe marker added by the highlighter. |
| * |
| * @return the error stripe tooltip objects, or null if the highlighter does not add any error |
| * stripe markers or the marker has no tooltip. |
| */ |
| @Nullable |
| Object getErrorStripeTooltip(); |
| |
| /** |
| * Sets the object whose <code>toString()</code> method is called to get the text of the tooltip |
| * for the error stripe marker added by the highlighter. |
| * |
| * @param tooltipObject the error stripe tooltip objects, or null if the highlighter does not |
| * add any error stripe markers or the marker has no tooltip. |
| */ |
| void setErrorStripeTooltip(@Nullable Object tooltipObject); |
| |
| /** |
| * Returns the value indicating whether the error stripe marker has reduced width (like |
| * the markers used to highlight changed lines). |
| * |
| * @return true if the marker has reduced width, false otherwise. |
| */ |
| boolean isThinErrorStripeMark(); |
| |
| /** |
| * Sets the value indicating whether the error stripe marker has reduced width (like |
| * the markers used to highlight changed lines). |
| * |
| * @param value true if the marker has reduced width, false otherwise. |
| */ |
| void setThinErrorStripeMark(boolean value); |
| |
| /** |
| * Returns the color of the separator drawn above or below the range covered by |
| * the highlighter. |
| * |
| * @return the separator color, or null if the highlighter does not add a line separator. |
| */ |
| @Nullable |
| Color getLineSeparatorColor(); |
| |
| /** |
| * Sets the color of the separator drawn above or below the range covered by |
| * the highlighter. |
| * |
| * @param color the separator color, or null if the highlighter does not add a line separator. |
| */ |
| void setLineSeparatorColor(@Nullable Color color); |
| |
| void setLineSeparatorRenderer(LineSeparatorRenderer renderer); |
| |
| LineSeparatorRenderer getLineSeparatorRenderer(); |
| |
| /** |
| * Returns the placement of the separator drawn by the range highlighter |
| * (above or below the range). |
| * |
| * @return the separator placement, or null if the highlighter does not add a line separator. |
| */ |
| @Nullable |
| SeparatorPlacement getLineSeparatorPlacement(); |
| |
| /** |
| * Sets the placement of the separator drawn by the range highlighter |
| * (above or below the range). |
| * |
| * @param placement the separator placement, or null if the highlighter does not add a line separator. |
| */ |
| void setLineSeparatorPlacement(@Nullable SeparatorPlacement placement); |
| |
| /** |
| * Sets the filter which can disable the highlighter in specific editor instances. |
| * |
| * @param filter the filter controlling the highlighter availability, or MarkupEditorFilter.EMPTY if |
| * highlighter is available in all editors. |
| */ |
| void setEditorFilter(@NotNull MarkupEditorFilter filter); |
| |
| /** |
| * Gets the filter which can disable the highlighter in specific editor instances. |
| * |
| * @return the filter controlling the highlighter availability. Default availability is controlled by MarkupEditorFilter.EMPTY |
| */ |
| @NotNull |
| MarkupEditorFilter getEditorFilter(); |
| } |