package org.elixir_lang.mix.settings; import com.intellij.openapi.components.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import org.elixir_lang.jps.mix.JpsMixSettingsSerializer; import org.elixir_lang.jps.mix.MixSettingsState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Created by zyuyou on 2015/5/26. * */ @State( name = JpsMixSettingsSerializer.MIX_COMPONENT_NAME, storages = { @Storage(file = StoragePathMacros.PROJECT_FILE), @Storage(file = StoragePathMacros.PROJECT_CONFIG_DIR + "/" + JpsMixSettingsSerializer.MIX_CONFIG_FILE_NAME, scheme = StorageScheme.DIRECTORY_BASED) } ) public class MixSettings implements PersistentStateComponent<MixSettingsState>{ @NotNull private MixSettingsState myMixSettingsState = new MixSettingsState(); @NotNull public static MixSettings getInstance(@NotNull Project project){ MixSettings persisted = ServiceManager.getService(project, MixSettings.class); return persisted != null ? persisted : new MixSettings(); } @Nullable @Override public MixSettingsState getState() { return myMixSettingsState; } @Override public void loadState(@NotNull MixSettingsState mixSettings) { myMixSettingsState = mixSettings; } @NotNull public String getMixPath(){ return StringUtil.trimEnd(myMixSettingsState.myMixPath, ".bat"); } public void setMixPath(@NotNull String mixPath){ myMixSettingsState.myMixPath = mixPath; } public void setSupportsFormatterOption(boolean supportsFormatterOption) { myMixSettingsState.supportsFormatterOption = supportsFormatterOption; } public boolean getSupportsFormatterOption() { return myMixSettingsState.supportsFormatterOption; } @Override public String toString() { return "MixSettings(state='" + myMixSettingsState.toString() + "')"; } }