package com.intellij.lang.javascript.linter.tslint.highlight;
import com.intellij.json.JsonFileType;
import com.intellij.lang.javascript.linter.JSLinterConfigChangeTracker;
import com.intellij.lang.javascript.linter.JSLinterConfigFileUtil;
import com.intellij.lang.javascript.linter.tslint.config.TsLintConfiguration;
import com.intellij.lang.javascript.linter.tslint.config.TsLintState;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import static com.intellij.lang.javascript.linter.tslint.config.TsLintConfiguration.TSLINT_JSON;
/**
* @author Irina.Chernushina on 6/4/2015.
*/
public final class TsLintConfigFileChangeTracker extends JSLinterConfigChangeTracker {
public TsLintConfigFileChangeTracker(@NotNull Project project) {
super(project, JsonFileType.INSTANCE);
}
public static TsLintConfigFileChangeTracker getInstance(@NotNull Project project) {
return ServiceManager.getService(project, TsLintConfigFileChangeTracker.class);
}
@Override
protected boolean isAnalyzerRestartNeeded(@NotNull Project project, @NotNull VirtualFile changedFile) {
final TsLintConfiguration configuration = TsLintConfiguration.getInstance(project);
final TsLintState state = configuration.getExtendedState().getState();
if (state.isCustomConfigFileUsed() && state.getCustomConfigFilePath() != null) {
final VirtualFile configVirtualFile = JSLinterConfigFileUtil.findLocalFileByPath(state.getCustomConfigFilePath());
return changedFile.equals(configVirtualFile);
}
else if (TSLINT_JSON.equals(changedFile.getName())) {
return true;
}
return false;
}
}