package com.dmarcotte.handlebars.config; import com.intellij.ide.util.PropertiesComponent; import com.intellij.lang.Language; import com.intellij.lang.html.HTMLLanguage; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static com.dmarcotte.handlebars.config.Property.*; public class HbConfig { public static boolean isAutoGenerateCloseTagEnabled() { return getBooleanPropertyValue(AUTO_GENERATE_CLOSE_TAG); } public static void setAutoGenerateCloseTagEnabled(boolean enabled) { setBooleanPropertyValue(AUTO_GENERATE_CLOSE_TAG, enabled); } public static boolean isAutocompleteMustachesEnabled() { return getBooleanPropertyValue(AUTOCOMPLETE_MUSTACHES); } public static void setAutocompleteMustachesEnabled(boolean enabled) { setBooleanPropertyValue(AUTOCOMPLETE_MUSTACHES, enabled); } public static boolean isFormattingEnabled() { return getBooleanPropertyValue(FORMATTER); } public static void setFormattingEnabled(boolean enabled) { setBooleanPropertyValue(FORMATTER, enabled); } public static boolean isAutoCollapseBlocksEnabled() { return getBooleanPropertyValue(AUTO_COLLAPSE_BLOCKS); } public static void setAutoCollapseBlocks(boolean enabled) { setBooleanPropertyValue(AUTO_COLLAPSE_BLOCKS, enabled); } @NotNull public static Language getCommenterLanguage() { final Language id = Language.findLanguageByID(getStringPropertyValue(COMMENTER_LANGUAGE_ID)); return id == null ? HTMLLanguage.INSTANCE : id; } public static void setCommenterLanguage(Language language) { if (language == null) { setStringPropertyValue(COMMENTER_LANGUAGE_ID, null); } else { setStringPropertyValue(COMMENTER_LANGUAGE_ID, language.getID()); } } public static String getRawOpenHtmlAsHandlebarsValue(Project project) { return getStringPropertyValue(SHOULD_OPEN_HTML, project); } public static boolean shouldOpenHtmlAsHandlebars(Project project) { String value = getRawOpenHtmlAsHandlebarsValue(project); return ENABLED.equals(value); } public static boolean setShouldOpenHtmlAsHandlebars(boolean value, Project project) { setBooleanPropertyValue(SHOULD_OPEN_HTML, value, project); return true; } private static String getStringPropertyValue(Property property, Project project) { return new PropertyAccessor(getProperties(project)).getPropertyValue(property); } @NotNull private static PropertiesComponent getProperties(@Nullable Project project) { return project == null ? PropertiesComponent.getInstance() : PropertiesComponent.getInstance(project); } private static void setStringPropertyValue(@NotNull Property property, @Nullable String value, @Nullable Project project) { new PropertyAccessor(getProperties(project)).setPropertyValue(property, value); } private static String getStringPropertyValue(Property property) { return getStringPropertyValue(property, null); } private static void setStringPropertyValue(Property property, String value) { setStringPropertyValue(property, value, null); } private static boolean getBooleanPropertyValue(Property property) { return ENABLED.equals(getStringPropertyValue(property)); } private static void setBooleanPropertyValue(@NotNull Property property, boolean enabled, @Nullable Project project) { setStringPropertyValue(property, enabled ? ENABLED : DISABLED, project); } private static void setBooleanPropertyValue(Property property, boolean enabled) { setBooleanPropertyValue(property, enabled, null); } }