package jav.gui.main; import jav.correctionBackend.Token; import jav.gui.events.MessageCenter; import jav.gui.events.concordance.ConcordanceEvent; import jav.gui.events.concordance.ConcordanceType; import jav.gui.filter.PrefixFilter; import java.util.ArrayList; import java.util.HashMap; import org.netbeans.spi.quicksearch.SearchProvider; import org.netbeans.spi.quicksearch.SearchRequest; import org.netbeans.spi.quicksearch.SearchResponse; /** *Copyright (c) 2012, IMPACT working group at the Centrum für Informations- und Sprachverarbeitung, University of Munich. *All rights reserved. *Redistribution and use in source and binary forms, with or without *modification, are permitted provided that the following conditions are met: *Redistributions of source code must retain the above copyright *notice, this list of conditions and the following disclaimer. *Redistributions in binary form must reproduce the above copyright *notice, this list of conditions and the following disclaimer in the *documentation and/or other materials provided with the distribution. *THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS *IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This file is part of the ocr-postcorrection tool developed * by the IMPACT working group at the Centrum für Informations- und Sprachverarbeitung, University of Munich. * For further information and contacts visit http://ocr.cis.uni-muenchen.de/ * * @author thorsten (thorsten.vobl@googlemail.com) */ public class MyTypePrefixSearchProvider implements SearchProvider { private HashMap<String, ArrayList<Token>> result; /** * Method is called by infrastructure when search operation was requested. * Implementors should evaluate given request and fill response object with * apropriate results * * @param request Search request object that contains information what to search for * @param response Search response object that stores search results. Note that it's important to react to return value of SearchResponse.addResult(...) method and stop computation if false value is returned. */ @Override public void evaluate(SearchRequest request, SearchResponse response) { if (MainController.findInstance().getDocOpen()) { PrefixFilter f = new PrefixFilter(request.getText(), ""); result = f.applyFilter(MainController.findInstance().getDocument().tokenIterator()); for (final String type : result.keySet()) { Runnable r = new Runnable() { @Override public void run() { MessageCenter.getInstance().fireConcordanceEvent(new ConcordanceEvent(this, ConcordanceType.CLONE, result.get(type), type)); } }; response.addResult(r, type + "<PRE> #: " + result.get(type).size()+"</PRE>"); } } } }