package com.dmarcotte.handlebars.pages; import com.dmarcotte.handlebars.HbBundle; import com.dmarcotte.handlebars.HbHighlighter; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.options.colors.AttributesDescriptor; import com.intellij.openapi.options.colors.ColorDescriptor; import com.intellij.openapi.options.colors.ColorSettingsPage; import icons.HandlebarsIcons; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.Map; import java.util.Set; public class HbColorsPage implements ColorSettingsPage { private static final AttributesDescriptor[] ATTRS; static { ATTRS = new AttributesDescriptor[HbHighlighter.DISPLAY_NAMES.size()]; Set<TextAttributesKey> textAttributesKeys = HbHighlighter.DISPLAY_NAMES.keySet(); TextAttributesKey[] keys = textAttributesKeys.toArray(new TextAttributesKey[textAttributesKeys.size()]); for (int i = 0; i < keys.length; i++) { TextAttributesKey key = keys[i]; String name = HbHighlighter.DISPLAY_NAMES.get(key).getFirst(); ATTRS[i] = new AttributesDescriptor(name, key); } } @NotNull public String getDisplayName() { return HbBundle.message("hb.files.file.type.description"); } public Icon getIcon() { return HandlebarsIcons.Handlebars_icon; } @NotNull public AttributesDescriptor[] getAttributeDescriptors() { return ATTRS; } @NotNull public ColorDescriptor[] getColorDescriptors() { return ColorDescriptor.EMPTY_ARRAY; } @NotNull public SyntaxHighlighter getHighlighter() { return new HbHighlighter(); } @NotNull public String getDemoText() { return "{{identifier my-val=true my-other-val=42 my-string-val=\"a string\"}}\n" + "{{! this is a comment }}\n" + "{{!--\n" + " this is a Handlebars block comment,\n" + " which can comment out mustache expressions: {{ignored}}\n" + "--}}\n" + "{{@data}}\n" + "\\{{escaped}}\n" ; } public Map<String, TextAttributesKey> getAdditionalHighlightingTagToDescriptorMap() { return null; } }