mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
create CompositeFilter and pass filter in one step
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user