package com.igormaznitsa.nbmindmap.nb.quicksearch; import com.igormaznitsa.nbmindmap.nb.swing.AboutPanel; import com.igormaznitsa.nbmindmap.utils.NbUtils; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; import javax.swing.SwingUtilities; import org.netbeans.spi.quicksearch.*; public class QuickSearchProvider implements SearchProvider { private static class SearchedItem { private final String displayName; private final Runnable runnable; private final Pattern pattern; private SearchedItem(final String pattern, final String displayName, final Runnable run) { this.displayName = displayName; this.runnable = run; this.pattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); } public Runnable getRunnable() { return this.runnable; } public String getDisplayName() { return this.displayName; } public boolean isSatisfied(final String searchText) { return pattern.matcher(searchText).find(); } } private static final List<SearchedItem> ITEMS = Arrays.asList(new SearchedItem(".*mind.*|.*map.*|.*", "Mind Map", new Runnable() { @Override public void run() { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { NbUtils.plainMessageOk(java.util.ResourceBundle.getBundle("com/igormaznitsa/nbmindmap/i18n/Bundle").getString("MMDCfgPanel.buttonAbout.Text"), new AboutPanel()); } }); } })); @Override public void evaluate(final SearchRequest request, final SearchResponse response) { final String text = request.getText(); for (final SearchedItem item : ITEMS) { if (item.isSatisfied(text)) { if (!response.addResult(item.getRunnable(), item.getDisplayName())) { break; } } } } }