package main.java.com.konifar.stringssearch.search; import com.intellij.ide.util.gotoByName.ChooseByNameBase; import com.intellij.ide.util.gotoByName.DefaultChooseByNameItemProvider; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.psi.PsiElement; import com.intellij.util.Processor; import main.java.com.konifar.stringssearch.models.StringElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; public final class SearchStringItemProvider extends DefaultChooseByNameItemProvider { public SearchStringItemProvider(@Nullable PsiElement context) { super(context); } @Override public boolean filterElements(@NotNull ChooseByNameBase base, @NotNull String pattern, boolean everywhere, @NotNull ProgressIndicator indicator, @NotNull Processor<Object> consumer) { Collection<StringElement> elements = ((SearchStringModel) base.getModel()).getFilterItems(); if (elements != null) { for (StringElement element : elements) { String value = element.getValue(); if (value == null) { return false; } if (value.toLowerCase().contains(pattern.toLowerCase()) && !consumer.process(element)) { return false; } } } return false; } }