Package com.intellij.coldFusion.UI.highlighting

Source Code of com.intellij.coldFusion.UI.highlighting.CfmlHighlighter$CfmlFileHighlighter

/*
* 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.coldFusion.UI.highlighting;

import com.intellij.coldFusion.CfmlBundle;
import com.intellij.coldFusion.model.lexer.CfmlLexer;
import com.intellij.coldFusion.model.lexer.CfmlTokenTypes;
import com.intellij.coldFusion.model.lexer.CfscriptTokenTypes;
import com.intellij.coldFusion.model.parsers.CfmlElementTypes;
import com.intellij.ide.highlighter.custom.CustomHighlighterColors;
import com.intellij.lexer.LayeredLexer;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors;
import com.intellij.openapi.editor.HighlighterColors;
import com.intellij.openapi.editor.XmlHighlighterColors;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.ex.util.LayerDescriptor;
import com.intellij.openapi.editor.ex.util.LayeredLexerEditorHighlighter;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.tree.IElementType;
import com.intellij.sql.psi.SqlFileType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.HashMap;
import java.util.Map;

/**
* Created by Lera Nikolaenko
* Date: 06.10.2008
*/
public class CfmlHighlighter extends LayeredLexerEditorHighlighter {
  public CfmlHighlighter(@Nullable final Project project,
                         @Nullable final VirtualFile virtualFile,
                         @NotNull final EditorColorsScheme colors) {
    super(new CfmlFileHighlighter(project), colors);
    registerLayer(CfmlElementTypes.TEMPLATE_TEXT, new LayerDescriptor(
      SyntaxHighlighterFactory.getSyntaxHighlighter(StdFileTypes.HTML, project, virtualFile), ""));
    registerLayer(CfmlElementTypes.SQL,
                  new LayerDescriptor(SyntaxHighlighterFactory.getSyntaxHighlighter(SqlFileType.INSTANCE, project, virtualFile), ""));
  }

  static class CfmlFileHighlighter extends SyntaxHighlighterBase {
    private static Map<IElementType, TextAttributesKey> keys2;
    private Project myProject;

    CfmlFileHighlighter(Project project) {
      myProject = project;
    }

    @NotNull
    public Lexer getHighlightingLexer() {
      return new LayeredLexer(new CfmlLexer(true, myProject));
    }

    static final TextAttributesKey CFML_ATTRIBUTE = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.attribute"),
      CustomHighlighterColors.CUSTOM_KEYWORD2_ATTRIBUTES
    );

    static final TextAttributesKey CFML_COMMENT = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.comment"),
      DefaultLanguageHighlighterColors.DOC_COMMENT
    );

    static final TextAttributesKey CFML_TAG_NAME = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.tag.name"),
      XmlHighlighterColors.HTML_TAG_NAME
    );

    static final TextAttributesKey CFML_BRACKETS = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.bracket"),
      DefaultLanguageHighlighterColors.BRACES
    );

    static final TextAttributesKey CFML_OPERATOR = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.operator"),
      DefaultLanguageHighlighterColors.OPERATION_SIGN
    );

    static final TextAttributesKey CFML_STRING = TextAttributesKey.createTextAttributesKey(
      "Cfml" + CfmlBundle.message("cfml.string"),
      DefaultLanguageHighlighterColors.STRING
    );

    static final TextAttributesKey CFML_NUMBER = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.number"),
      DefaultLanguageHighlighterColors.NUMBER
    );

    static final TextAttributesKey CFML_IDENTIFIER = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.identifier"),
      DefaultLanguageHighlighterColors.IDENTIFIER
    );

    static final TextAttributesKey CFML_BAD_CHARACTER = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.badcharacter"),
      HighlighterColors.BAD_CHARACTER
    );

    static final TextAttributesKey CFML_SHARP = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.sharp"),
      CustomHighlighterColors.CUSTOM_KEYWORD2_ATTRIBUTES
    );

    static final TextAttributesKey CFML_KEYWORD = TextAttributesKey.createTextAttributesKey(
      CfmlBundle.message("cfml.keyword"),
      DefaultLanguageHighlighterColors.KEYWORD
    );

    static {
      keys2 = new HashMap<IElementType, TextAttributesKey>();

      fillMap(keys2, CfmlTokenTypes.BRACKETS, CFML_BRACKETS);
      fillMap(keys2, CfmlTokenTypes.STRING_ELEMENTS, CFML_STRING);
      // keys2.put(CfmlCompositeElements.TAG, XmlHighlighterColors.HTML_TAG);
      keys2.put(CfmlTokenTypes.ASSIGN, CFML_OPERATOR);
      keys2.put(CfmlTokenTypes.START_EXPRESSION, CFML_SHARP);
      keys2.put(CfmlTokenTypes.CF_TAG_NAME, CFML_TAG_NAME);
      keys2.put(CfmlTokenTypes.ATTRIBUTE, CFML_ATTRIBUTE);
      keys2.put(CfmlTokenTypes.END_EXPRESSION, CFML_SHARP);
      keys2.put(CfmlTokenTypes.COMMENT, CFML_COMMENT);
      keys2.put(CfmlTokenTypes.VAR_ANNOTATION, CFML_COMMENT);
      // for script language
      fillMap(keys2, CfscriptTokenTypes.OPERATIONS, CFML_OPERATOR);
      fillMap(keys2, CfscriptTokenTypes.BRACKETS, CFML_BRACKETS);
      // fillMap(keys2, CfscriptTokenTypes.STRING_ELEMENTS, CFML_STRING);
      fillMap(keys2, CfscriptTokenTypes.WORD_OPERATIONS, CFML_KEYWORD);
      fillMap(keys2, CfscriptTokenTypes.KEYWORDS, CFML_KEYWORD);
      keys2.put(CfscriptTokenTypes.INTEGER, CFML_NUMBER);
      keys2.put(CfscriptTokenTypes.DOUBLE, CFML_NUMBER);
      keys2.put(CfscriptTokenTypes.COMMENT, CFML_COMMENT);
      keys2.put(CfscriptTokenTypes.IDENTIFIER, CFML_IDENTIFIER);
      keys2.put(CfscriptTokenTypes.BAD_CHARACTER, CFML_BAD_CHARACTER);
      keys2.put(CfscriptTokenTypes.OPENSHARP, CFML_SHARP);
      keys2.put(CfscriptTokenTypes.CLOSESHARP, CFML_SHARP);
    }

    @NotNull
    public TextAttributesKey[] getTokenHighlights(IElementType tokenType) {
      return pack(keys2.get(tokenType));
    }
  }
}
TOP

Related Classes of com.intellij.coldFusion.UI.highlighting.CfmlHighlighter$CfmlFileHighlighter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.