package requirejs.settings; import com.intellij.openapi.components.*; import com.intellij.openapi.project.Project; import com.intellij.util.xmlb.XmlSerializerUtil; import org.jetbrains.annotations.Nullable; @State( name = "RequirejsProjectComponent", storages = { @Storage(id = "default", file = StoragePathMacros.PROJECT_FILE), @Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR + "/requirejsPlugin.xml", scheme = StorageScheme.DIRECTORY_BASED) } ) public class Settings implements PersistentStateComponent<Settings> { public static final String REQUIREJS_REQUIRE_FUNCTION_NAME = "require"; public static final String REQUIREJS_DEFINE_FUNCTION_NAME = "define"; public static final String DEFAULT_PUBLIC_PATH = "public"; public static final String DEFAULT_CONFIG_FILE_PATH = "main.js"; public static final String DEFAULT_BASEURL = "."; public static final boolean DEFAULT_PLUGIN_ENABLED = false; public static final boolean DEFAULT_OVERRIDE_BASEURL = false; public String publicPath = DEFAULT_PUBLIC_PATH; public String configFilePath = DEFAULT_CONFIG_FILE_PATH; public String baseUrl = DEFAULT_BASEURL; public boolean overrideBaseUrl = DEFAULT_OVERRIDE_BASEURL; public boolean pluginEnabled = DEFAULT_PLUGIN_ENABLED; protected Project project; public static Settings getInstance(Project project) { Settings settings = ServiceManager.getService(project, Settings.class); settings.project = project; return settings; } @Nullable @Override public Settings getState() { return this; } @Override public void loadState(Settings state) { XmlSerializerUtil.copyBean(state, this); } public String getVersion() { return publicPath.concat(configFilePath); } }