/* * Copyright 2000-2013 JetBrains s.r.o. * Copyright 2014-2014 AS3Boyan * Copyright 2014-2014 Elias Ku * * 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.plugins.haxe.ide.highlight; import com.intellij.lexer.FlexAdapter; import com.intellij.lexer.Lexer; import com.intellij.openapi.editor.DefaultLanguageHighlighterColors; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.fileTypes.SyntaxHighlighterBase; import com.intellij.plugins.haxe.hxml.HXMLParser; import com.intellij.plugins.haxe.hxml.HXMLParserDefinition; import com.intellij.plugins.haxe.hxml.lexer.HXMLLexer; import com.intellij.plugins.haxe.hxml.psi.HXMLElementType; import com.intellij.plugins.haxe.hxml.psi.HXMLTokenType; import com.intellij.plugins.haxe.hxml.psi.HXMLTypes; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import java.awt.*; import java.io.Reader; import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey; public class HXMLSyntaxHighlighter extends SyntaxHighlighterBase { public static final TextAttributesKey KEY = createTextAttributesKey("SIMPLE_KEY", DefaultLanguageHighlighterColors.KEYWORD); public static final TextAttributesKey VALUE = createTextAttributesKey("SIMPLE_VALUE", DefaultLanguageHighlighterColors.STRING); public static final TextAttributesKey CLASS_NAME = createTextAttributesKey("SIMPLE_CLASS_NAME", DefaultLanguageHighlighterColors.CLASS_REFERENCE); public static final TextAttributesKey COMMENT = createTextAttributesKey("SIMPLE_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT); public static final TextAttributesKey INCLUDE = createTextAttributesKey("SIMPLE_INCLUDE", DefaultLanguageHighlighterColors.CONSTANT); static final TextAttributesKey BAD_CHARACTER = createTextAttributesKey("SIMPLE_BAD_CHARACTER", new TextAttributes(Color.RED, null, null, null, Font.BOLD)); private static final TextAttributesKey[] BAD_CHAR_KEYS = new TextAttributesKey[]{BAD_CHARACTER}; private static final TextAttributesKey[] KEY_KEYS = new TextAttributesKey[]{KEY}; private static final TextAttributesKey[] VALUE_KEYS = new TextAttributesKey[]{VALUE}; private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT}; private static final TextAttributesKey[] INCLUDE_KEYS = new TextAttributesKey[]{INCLUDE}; private static final TextAttributesKey[] CLASS_NAME_KEYS = new TextAttributesKey[]{CLASS_NAME}; private static final TextAttributesKey[] EMPTY_KEYS = new TextAttributesKey[0]; @NotNull @Override public Lexer getHighlightingLexer() { return new FlexAdapter(new HXMLLexer((Reader)null)); } @NotNull @Override public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { if (tokenType.equals(HXMLTypes.KEY)) { return KEY_KEYS; } else if (tokenType.equals(HXMLTypes.QUALIFIEDCLASSNAME)) { return CLASS_NAME_KEYS; } else if (tokenType.equals(HXMLTypes.VALUE)) { return VALUE_KEYS; } else if (tokenType.equals(HXMLTypes.COMMENT)) { return COMMENT_KEYS; } else if (tokenType.equals(TokenType.BAD_CHARACTER)) { return BAD_CHAR_KEYS; } if (tokenType.equals(HXMLTypes.HXML_FILE)) { return INCLUDE_KEYS; } else { return EMPTY_KEYS; } } }