package krasa.grepconsole.filter;
import com.intellij.execution.filters.InputFilter;
import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import krasa.grepconsole.grep.listener.GrepCopyingFilterListener;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class GrepCopyingFilter extends AbstractFilter implements InputFilter {
private List<GrepCopyingFilterListener> copyingListeners = new CopyOnWriteArrayList<>();
public GrepCopyingFilter(Project project) {
super(project);
}
@Override
public List<Pair<String, ConsoleViewContentType>> applyFilter(String s,
ConsoleViewContentType consoleViewContentType) {
for (int i = 0; i < copyingListeners.size(); i++) {
GrepCopyingFilterListener copyingListener = copyingListeners.get(i);
copyingListener.process(s, consoleViewContentType);
}
return null;
}
@Override
protected void refreshProfile() {
super.refreshProfile();
for (GrepCopyingFilterListener copyingListener : copyingListeners) {
copyingListener.profileUpdated(profile);
}
}
public void addListener(GrepCopyingFilterListener copyingListener) {
copyingListeners.add(copyingListener);
}
public void removeListener(GrepCopyingFilterListener copyingListener) {
copyingListeners.remove(copyingListener);
}
}