simple language: cleanup SimpleAnnotator

This commit is contained in:
Yann Cébron 2020-11-18 16:45:14 +01:00
parent 45ebe1e663
commit 62264e1eb4

View File

@ -5,6 +5,7 @@ package org.intellij.sdk.language;
import com.intellij.lang.annotation.AnnotationBuilder; import com.intellij.lang.annotation.AnnotationBuilder;
import com.intellij.lang.annotation.AnnotationHolder; import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.Annotator; import com.intellij.lang.annotation.Annotator;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors; import com.intellij.openapi.editor.DefaultLanguageHighlighterColors;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.TextRange;
@ -15,10 +16,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
import static com.intellij.lang.annotation.HighlightSeverity.ERROR;
import static com.intellij.lang.annotation.HighlightSeverity.INFORMATION;
public class SimpleAnnotator implements Annotator { public class SimpleAnnotator implements Annotator {
// Define strings for the Simple language prefix - used for annotations, line markers, etc. // Define strings for the Simple language prefix - used for annotations, line markers, etc.
@ -32,7 +29,7 @@ public class SimpleAnnotator implements Annotator {
return; return;
} }
// Ensure the Psi element contains a string that starts with the key and separator // Ensure the Psi element contains a string that starts with the prefix and separator
PsiLiteralExpression literalExpression = (PsiLiteralExpression) element; PsiLiteralExpression literalExpression = (PsiLiteralExpression) element;
String value = literalExpression.getValue() instanceof String ? (String) literalExpression.getValue() : null; String value = literalExpression.getValue() instanceof String ? (String) literalExpression.getValue() : null;
if ((value == null) || !value.startsWith(SIMPLE_PREFIX_STR + SIMPLE_SEPARATOR_STR)) { if ((value == null) || !value.startsWith(SIMPLE_PREFIX_STR + SIMPLE_SEPARATOR_STR)) {
@ -52,13 +49,13 @@ public class SimpleAnnotator implements Annotator {
List<SimpleProperty> properties = SimpleUtil.findProperties(project, possibleProperties); List<SimpleProperty> properties = SimpleUtil.findProperties(project, possibleProperties);
// Set the annotations using the text ranges - Normally there would be one range, set by the element itself. // Set the annotations using the text ranges - Normally there would be one range, set by the element itself.
holder.newAnnotation(INFORMATION, "") holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
.range(prefixRange).textAttributes(DefaultLanguageHighlighterColors.KEYWORD).create(); .range(prefixRange).textAttributes(DefaultLanguageHighlighterColors.KEYWORD).create();
holder.newAnnotation(INFORMATION, "") holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
.range(separatorRange).textAttributes(SimpleSyntaxHighlighter.SEPARATOR).create(); .range(separatorRange).textAttributes(SimpleSyntaxHighlighter.SEPARATOR).create();
if (properties.isEmpty()) { if (properties.isEmpty()) {
// No well-formed property found following the key-separator // No well-formed property found following the key-separator
AnnotationBuilder builder = holder.newAnnotation(ERROR, "Unresolved property").range(keyRange); AnnotationBuilder builder = holder.newAnnotation(HighlightSeverity.ERROR, "Unresolved property").range(keyRange);
// Force the text attributes to Simple syntax bad character // Force the text attributes to Simple syntax bad character
builder.textAttributes(SimpleSyntaxHighlighter.BAD_CHARACTER); builder.textAttributes(SimpleSyntaxHighlighter.BAD_CHARACTER);
// ** Tutorial step 18.3 - Add a quick fix for the string containing possible properties // ** Tutorial step 18.3 - Add a quick fix for the string containing possible properties
@ -67,7 +64,8 @@ public class SimpleAnnotator implements Annotator {
builder.create(); builder.create();
} else { } else {
// Found at least one property, force the text attributes to Simple syntax value character // Found at least one property, force the text attributes to Simple syntax value character
holder.newAnnotation(INFORMATION, "").range(keyRange).textAttributes(SimpleSyntaxHighlighter.VALUE).create(); holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
.range(keyRange).textAttributes(SimpleSyntaxHighlighter.VALUE).create();
} }
} }