package krasa.grepconsole.action; import krasa.grepconsole.filter.GrepHighlightFilter; import krasa.grepconsole.plugin.MyConfigurable; import krasa.grepconsole.plugin.ServiceManager; import org.jetbrains.annotations.Nullable; import com.intellij.execution.filters.Filter; import com.intellij.execution.impl.EditorHyperlinkSupport; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; public class EditorHighlightAction extends HighlightManipulationAction { protected Editor editor; protected Project project; @Override public void actionPerformed(AnActionEvent e) { editor = e.getData(PlatformDataKeys.EDITOR); project = e.getProject(); if (editor != null && project != null) { MyConfigurable instance = new MyConfigurable(); instance.setCurrentAction(this); boolean b = ShowSettingsUtil.getInstance().editConfigurable(e.getProject(), instance); if (b) { applySettings(); } instance.setCurrentAction(null); } } private void highlight(Editor editor, Project project) { EditorHyperlinkSupport myHyperlinks = new EditorHyperlinkSupport(editor, project); int lineCount = editor.getDocument().getLineCount(); if (lineCount > 0) { myHyperlinks.highlightHyperlinks(getGrepFilter(project), getPredefinedMessageFilter(), 0, lineCount - 1); } } private GrepHighlightFilter getGrepFilter(Project project) { return ServiceManager.getInstance().createHighlightFilter(project, null); } private Filter getPredefinedMessageFilter() { return new Filter() { @Nullable @Override public Result applyFilter(String line, int entireLength) { return null; } }; } @Override public void applySettings() { removeAllHighlighters(null, editor); highlight(editor, project); } }