lvcs-impl
[idea/community.git] / lang-api / src / com / intellij / lang / annotation / AnnotationHolder.java
1 /*
2  * Copyright 2000-2007 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.lang.annotation;
17
18 import com.intellij.lang.ASTNode;
19 import com.intellij.openapi.util.TextRange;
20 import com.intellij.psi.PsiElement;
21 import org.jetbrains.annotations.NotNull;
22 import org.jetbrains.annotations.Nullable;
23
24 /**
25  * Allows a custom language plugin to define annotations for files in that language.
26  *
27  * @author max
28  * @see Annotator#annotate(com.intellij.psi.PsiElement, AnnotationHolder)
29  */
30
31 public interface AnnotationHolder {
32   /**
33    * Creates an error annotation with the specified message over the specified PSI element.
34    *
35    * @param elt     the element over which the annotation is created.
36    * @param message the error message.
37    * @return the annotation (which can be modified to set additional annotation parameters)
38    */
39   Annotation createErrorAnnotation(@NotNull PsiElement elt, @Nullable String message);
40
41   /**
42    * Creates an error annotation with the specified message over the specified AST node.
43    *
44    * @param node    the node over which the annotation is created.
45    * @param message the error message.
46    * @return the annotation (which can be modified to set additional annotation parameters)
47    */
48   Annotation createErrorAnnotation(ASTNode node, @Nullable String message);
49
50   /**
51    * Creates an error annotation with the specified message over the specified text range.
52    *
53    * @param range   the text range over which the annotation is created.
54    * @param message the error message.
55    * @return the annotation (which can be modified to set additional annotation parameters)
56    */
57   Annotation createErrorAnnotation(TextRange range, @Nullable String message);
58
59   /**
60    * Creates a warning annotation with the specified message over the specified PSI element.
61    *
62    * @param elt     the element over which the annotation is created.
63    * @param message the warning message.
64    * @return the annotation (which can be modified to set additional annotation parameters)
65    */
66   Annotation createWarningAnnotation(PsiElement elt, @Nullable String message);
67
68   /**
69    * Creates a warning annotation with the specified message over the specified AST node.
70    *
71    * @param node    the node over which the annotation is created.
72    * @param message the warning message.
73    * @return the annotation (which can be modified to set additional annotation parameters)
74    */
75   Annotation createWarningAnnotation(ASTNode node, @Nullable String message);
76
77   /**
78    * Creates a warning annotation with the specified message over the specified text range.
79    *
80    * @param range   the text range over which the annotation is created.
81    * @param message the warning message.
82    * @return the annotation (which can be modified to set additional annotation parameters)
83    */
84   Annotation createWarningAnnotation(TextRange range, @Nullable String message);
85
86   /**
87     * Creates an annotation with severity {@link HighlightSeverity#INFO} ('weak warning') with the specified
88     * message over the specified PSI element.
89     *
90     * @param elt     the element over which the annotation is created.
91     * @param message the info message.
92     * @return the annotation (which can be modified to set additional annotation parameters)
93     */
94    Annotation createInformationAnnotation(PsiElement elt, @Nullable String message);
95
96    /**
97     * Creates an annotation with severity {@link HighlightSeverity#INFO} ('weak warning') with the specified
98     * message over the specified AST node.
99     *
100     * @param node    the node over which the annotation is created.
101     * @param message the info message.
102     * @return the annotation (which can be modified to set additional annotation parameters)
103     */
104    Annotation createInformationAnnotation(ASTNode node, @Nullable String message);
105
106    /**
107     * Creates an annotation with severity {@link HighlightSeverity#INFO} ('weak warning') with the specified
108     * message over the specified text range.
109     *
110     * @param range   the text range over which the annotation is created.
111     * @param message the info message.
112     * @return the annotation (which can be modified to set additional annotation parameters)
113     */
114    Annotation createInformationAnnotation(TextRange range, String message);
115
116
117   /**
118    * Creates an information annotation (colored highlighting only, with no gutter mark and not participating in
119    * "Next Error/Warning" navigation) with the specified message over the specified PSI element.
120    *
121    * @param elt     the element over which the annotation is created.
122    * @param message the information message.
123    * @return the annotation (which can be modified to set additional annotation parameters)
124    */
125   Annotation createInfoAnnotation(PsiElement elt, @Nullable String message);
126
127   /**
128    * Creates an information annotation (colored highlighting only, with no gutter mark and not participating in
129    * "Next Error/Warning" navigation) with the specified message over the specified AST node.
130    *
131    * @param node    the node over which the annotation is created.
132    * @param message the information message.
133    * @return the annotation (which can be modified to set additional annotation parameters)
134    */
135   Annotation createInfoAnnotation(ASTNode node, @Nullable String message);
136
137   /**
138    * Creates an information annotation (colored highlighting only, with no gutter mark and not participating in
139    * "Next Error/Warning" navigation)with the specified message over the specified text range.
140    *
141    * @param range   the text range over which the annotation is created.
142    * @param message the information message.
143    * @return the annotation (which can be modified to set additional annotation parameters)
144    */
145   Annotation createInfoAnnotation(TextRange range, String message);
146
147 }