create CompositeFilter and pass filter in one step

This commit is contained in:
Vladimir Krivosheev
2016-12-07 16:52:14 +01:00
parent e2d2bd81bc
commit 1f2583d00c
2 changed files with 27 additions and 20 deletions
@@ -34,17 +34,23 @@ import java.util.List;
public class CompositeFilter implements Filter, FilterMixin {
private static final Logger LOG = Logger.getInstance(CompositeFilter.class);
private final List<Filter> myFilters = new ArrayList<>();
private final List<Filter> myFilters;
private boolean myIsAnyHeavy;
private boolean forceUseAllFilters;
private final DumbService myDumbService;
public CompositeFilter(@NotNull Project project) {
this(project, new ArrayList<>());
}
public CompositeFilter(@NotNull Project project, @NotNull List<Filter> filters) {
myDumbService = DumbService.getInstance(project);
myFilters = filters;
}
protected CompositeFilter(DumbService dumbService) {
myDumbService = dumbService;
myFilters = new ArrayList<>();
}
@Override
@@ -285,29 +285,11 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
myPsiDisposedCheck = new DisposedPsiManagerCheck(project);
myProject = project;
myFilters = new CompositeFilter(project);
if (usePredefinedMessageFilter) {
for (ConsoleFilterProvider eachProvider : Extensions.getExtensions(ConsoleFilterProvider.FILTER_PROVIDERS)) {
Filter[] filters;
if (eachProvider instanceof ConsoleDependentFilterProvider) {
filters = ((ConsoleDependentFilterProvider)eachProvider).getDefaultFilters(this, project, searchScope);
}
else if (eachProvider instanceof ConsoleFilterProviderEx) {
filters = ((ConsoleFilterProviderEx)eachProvider).getDefaultFilters(project, searchScope);
}
else {
filters = eachProvider.getDefaultFilters(project);
}
for (Filter filter : filters) {
myFilters.addFilter(filter);
}
}
}
myFilters = new CompositeFilter(project, usePredefinedMessageFilter ? computeConsoleFilters(project, searchScope) : new SmartList<>());
myFilters.setForceUseAllFilters(true);
myHeavyUpdateTicket = 0;
myHeavyAlarm = myFilters.isAnyHeavy() ? new Alarm(Alarm.ThreadToUse.POOLED_THREAD, this) : null;
ConsoleInputFilterProvider[] inputFilters = Extensions.getExtensions(ConsoleInputFilterProvider.INPUT_FILTER_PROVIDERS);
if (inputFilters.length > 0) {
CompositeInputFilter compositeInputFilter = new CompositeInputFilter(project);
@@ -349,6 +331,25 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
}
@NotNull
private List<Filter> computeConsoleFilters(@NotNull Project project, @NotNull GlobalSearchScope searchScope) {
List<Filter> result = new ArrayList<>();
for (ConsoleFilterProvider eachProvider : ConsoleFilterProvider.FILTER_PROVIDERS.getExtensions()) {
Filter[] filters;
if (eachProvider instanceof ConsoleDependentFilterProvider) {
filters = ((ConsoleDependentFilterProvider)eachProvider).getDefaultFilters(this, project, searchScope);
}
else if (eachProvider instanceof ConsoleFilterProviderEx) {
filters = ((ConsoleFilterProviderEx)eachProvider).getDefaultFilters(project, searchScope);
}
else {
filters = eachProvider.getDefaultFilters(project);
}
ContainerUtil.addAll(result, filters);
}
return result;
}
@Override
public void attachToProcess(final ProcessHandler processHandler) {
myState = myState.attachTo(this, processHandler);