/* * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.gui; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import jalview.datamodel.*; import jalview.jbgui.*; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class Finder extends GFinder { AlignViewport av; AlignmentPanel ap; JInternalFrame frame; int seqIndex = 0; int resIndex = -1; SearchResults searchResults; /** * Creates a new Finder object. * * @param av * DOCUMENT ME! * @param ap * DOCUMENT ME! * @param f * DOCUMENT ME! */ public Finder() { frame = new JInternalFrame(); frame.setContentPane(this); frame.setLayer(JLayeredPane.PALETTE_LAYER); Desktop.addInternalFrame(frame, "Find", 340, 110); textfield.requestFocus(); } /** * DOCUMENT ME! * * @param e * DOCUMENT ME! */ public void findNext_actionPerformed(ActionEvent e) { if (getFocusedViewport()) { doSearch(false); } } /** * DOCUMENT ME! * * @param e * DOCUMENT ME! */ public void findAll_actionPerformed(ActionEvent e) { if (getFocusedViewport()) { resIndex = -1; seqIndex = 0; doSearch(true); } } /** * gets the topmost alignment window and sets av and ap accordingly * @return false if no alignment window was found */ boolean getFocusedViewport() { // now checks further down the window stack to fix bug https://mantis.lifesci.dundee.ac.uk/view.php?id=36008 JInternalFrame[] frames = Desktop.desktop.getAllFrames(); for (int f=0;f 0)) { haveResults=true; ap.idPanel.highlightSearchResults(idMatch); } else { ap.idPanel.highlightSearchResults(null); } if (searchResults.getSize() > 0) { haveResults=true; createNewGroup.setEnabled(true); } else { searchResults = null; } // if allResults is null, this effectively switches displaySearch flag in // seqCanvas ap.highlightSearchResults(searchResults); // TODO: add enablers for 'SelectSequences' or 'SelectColumns' or // 'SelectRegion' selection if (!haveResults) { JOptionPane.showInternalMessageDialog(this, "Finished searching", null, JOptionPane.INFORMATION_MESSAGE); resIndex = -1; seqIndex = 0; } if (findAll) { String message = (idMatch.size()>0) ? ""+idMatch.size()+" IDs" : ""; if (idMatch.size()>0 && searchResults.getSize()>0) { message += " and "; } message += searchResults.getSize() + " subsequence matches found."; JOptionPane.showInternalMessageDialog(this, message, null, JOptionPane.INFORMATION_MESSAGE); resIndex = -1; seqIndex = 0; } } }