void (@NotNull String query, @NotNull PluginsGroup result) { myPluginModel.setInvalidFixCallback(null); SearchQueryParser.Installed parser = new SearchQueryParser.Installed(query); if (myInstalledSearchSetState) { for (AnAction action : myInstalledSearchGroup.getChildren(null)) { ((InstalledSearchOptionAction)action).setState(parser); } } List<IdeaPluginDescriptor> descriptors = myPluginModel.getInstalledDescriptors(); if (!parser.vendors.isEmpty()) { for (Iterator<IdeaPluginDescriptor> I = descriptors.iterator(); I.hasNext(); ) { if (!MyPluginModel.isVendor(I.next(), parser.vendors)) { I.remove(); } } } if (!parser.tags.isEmpty()) { for (Iterator<IdeaPluginDescriptor> I = descriptors.iterator(); I.hasNext(); ) { if (!ContainerUtil.intersects(getTags(I.next()), parser.tags)) { I.remove(); } } } for (Iterator<IdeaPluginDescriptor> I = descriptors.iterator(); I.hasNext(); ) { IdeaPluginDescriptor descriptor = I.next(); if (parser.attributes) { if (parser.enabled && (!myPluginModel.isEnabled(descriptor) || myPluginModel.hasErrors(descriptor))) { I.remove(); continue; } if (parser.disabled && (myPluginModel.isEnabled(descriptor) || myPluginModel.hasErrors(descriptor))) { I.remove(); continue; } if (parser.bundled && !descriptor.isBundled()) { I.remove(); continue; } if (parser.downloaded && descriptor.isBundled()) { I.remove(); continue; } if (parser.invalid && !myPluginModel.hasErrors(descriptor)) { I.remove(); continue; } if (parser.needUpdate && !PluginUpdatesService.isNeedUpdate(descriptor)) { I.remove(); continue; } } if (parser.searchQuery != null && !containsQuery(descriptor, parser.searchQuery)) { I.remove(); } } result.descriptors.addAll(descriptors); PluginManagerUsageCollector.performInstalledTabSearch(ProjectUtil.getActiveProject(), parser, result.descriptors); if (!result.descriptors.isEmpty()) { if (parser.invalid) { myPluginModel.setInvalidFixCallback(() -> { PluginsGroup group = myInstalledSearchPanel.getGroup(); if (group.ui == null) { myPluginModel.setInvalidFixCallback(null); return; } PluginsGroupComponent resultPanel = myInstalledSearchPanel.getPanel(); for (IdeaPluginDescriptor descriptor : new ArrayList<>(group.descriptors)) { if (!myPluginModel.hasErrors(descriptor)) { resultPanel.removeFromGroup(group, descriptor); } } group.titleWithCount(); myInstalledSearchPanel.fullRepaint(); if (group.descriptors.isEmpty()) { myPluginModel.setInvalidFixCallback(null); myInstalledSearchPanel.removeGroup(); } }); } else if (parser.needUpdate) { result.rightAction = new LinkLabelButton<>(IdeBundle.message("plugin.manager.update.all"), null, (__, ___) -> { result.rightAction.setEnabled(false); for (ListPluginComponent plugin : result.ui.plugins) { plugin.updatePlugin(); } }); } Collection<IdeaPluginDescriptor> updates = PluginUpdatesService.getUpdates(); if (!ContainerUtil.isEmpty(updates)) { myPostFillGroupCallback = () -> { applyUpdates(myPanel, updates); selectionListener.accept(myInstalledPanel); }; } } }