package patternssearching.actions.run;

import cz.crishpean.utils.exception.BadObjectState;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.logging.Logger;
import patternssearching.misc.DataGetter;
import patternssearchingapi.pattern.PatternsGroup;
import patternssearching.searching.SearchPatterns;

/**
 * Akce ktera spusti vyhledavani vzoru v obrazku.
 * 
 * Pouzije se vzor aktualne zobrazeny v PatternsManageru,
 * obrazek zobrazeny v okne pro zobrazeni obrazku
 * a algoritmus ktery je v Nastaveni zvoleny jako defaultni.
 * @author Zora Horejsova
 */
public final class QuickRunAction implements ActionListener {

	public void actionPerformed(ActionEvent e) {

        try {
			if (DataGetter.getSelectedImageFile() == null){
				Logger.getLogger(QuickRunAction.class.getName()).warning("No selected image");
				return;
			}

			File f = DataGetter.getSelectedImageFile();
			PatternsGroup g = DataGetter.getSelectedPatternGroup();
			if (f == null || g == null) throw new BadObjectState("Application is not set properly for searching patterns. Image files/patterns are not set.");
			SearchPatterns.getInstance().setThresholding(true, 128);
            SearchPatterns.getInstance().setImages(new File[]{f});
            SearchPatterns.getInstance().setGroups(new PatternsGroup[]{g});
            SearchPatterns.getInstance().setAlgorithms(DataGetter.getDefaultAlgorithms());

            SearchPatterns.getInstance().run();
        } catch (BadObjectState ex) {
            Logger.getLogger(QuickRunAction.class.getName()).warning(ex.getMessage());
        } 
	}
}
