package com.eslint.actions; import com.eslint.ESLintProjectComponent; import com.eslint.utils.ESLintRunner; import com.intellij.execution.ExecutionException; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; public class ESLintFixAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent e) { final Project project = e.getProject(); if (project == null) return; final VirtualFile file = (VirtualFile) e.getDataContext().getData(DataConstants.VIRTUAL_FILE); // TODO handle multiple selection if (file == null) { // File[] rtFiles = RTFile.DATA_KEY.getData(e.getDataContext()); // if (rtFiles == null || rtFiles.length == 0) { // System.out.println("No file for rt compile"); // return; // } // // handle all files // for (RTFile rtFile : rtFiles) { // RTFileListener.compile(rtFile.getRtFile().getVirtualFile(), project); // } } else { ESLintProjectComponent component = project.getComponent(ESLintProjectComponent.class); if (!component.isSettingsValid() || !component.isEnabled()) { return; } // Result result = ESLintRunner.lint(project.getBasePath(), relativeFile, component.nodeInterpreter, component.eslintExecutable, component.eslintRcFile, component.customRulesPath); if (project.getBasePath() != null) { ESLintRunner.ESLintSettings settings = ESLintRunner.buildSettings(project.getBasePath(), file.getPath(), component); try { ESLintRunner.fix(settings); file.refresh(false, false); } catch (ExecutionException e1) { e1.printStackTrace(); } } } } //TODO implement update, disable when not relevant? // add project view popup //fix menu location }