package krasa.formatter.settings; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @State(name = "EclipseCodeFormatter", storages = {@Storage(id = "other", file = "$PROJECT_FILE$")}) public class ProjectPersistentStateComponent implements PersistentStateComponent<Settings> { @NotNull protected Settings settings; private Project project; public GlobalSettings globalSettings; public ProjectPersistentStateComponent(@NotNull Project project) { this.project = project; this.globalSettings = GlobalSettings.getInstance(); this.settings = globalSettings.getDefaultSettings(); } @Override @NotNull public Settings getState() { return settings; } @Override public void loadState(@NotNull Settings state) { settings = globalSettings.getSettings(state, project); } public void settingsUpdatedFromOtherProject(Settings updatedSettings) { final Settings.Formatter formatter = settings.getFormatter(); loadState(updatedSettings); settings.setFormatter(formatter); } public void setState(Settings state) { this.settings = state; } }