X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFinder.java;h=6bff69a5905dad0a97c3f232a3a13945cedcec54;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=cc91ebfbecd90eeebbf3ffc6e74486c61302f5b5;hpb=ab43013b7e357b84b4abade0dba949668dfb2a0e;p=jalview.git diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java index cc91ebf..6bff69a 100755 --- a/src/jalview/gui/Finder.java +++ b/src/jalview/gui/Finder.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -25,15 +25,20 @@ import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.jbgui.GFinder; import jalview.util.MessageManager; +import jalview.viewmodel.AlignmentViewport; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.util.Vector; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import javax.swing.AbstractAction; +import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JOptionPane; +import javax.swing.KeyStroke; /** * Performs the menu option for searching the alignment, for the next or all @@ -52,7 +57,7 @@ public class Finder extends GFinder private static final int WIDTH = 340; - AlignViewport av; + AlignmentViewport av; AlignmentPanel ap; @@ -80,7 +85,7 @@ public class Finder extends GFinder * @param viewport * @param alignPanel */ - public Finder(AlignViewport viewport, AlignmentPanel alignPanel) + public Finder(AlignmentViewport viewport, AlignmentPanel alignPanel) { av = viewport; ap = alignPanel; @@ -88,6 +93,7 @@ public class Finder extends GFinder frame = new JInternalFrame(); frame.setContentPane(this); frame.setLayer(JLayeredPane.PALETTE_LAYER); + addEscapeHandler(); Desktop.addInternalFrame(frame, MessageManager.getString("label.find"), WIDTH, HEIGHT); @@ -95,6 +101,31 @@ public class Finder extends GFinder } /** + * Add a handler for the Escape key when the window has focus + */ + private void addEscapeHandler() + { + getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "Cancel"); + getRootPane().getActionMap().put("Cancel", new AbstractAction() + { + public void actionPerformed(ActionEvent e) + { + escapeActionPerformed(); + } + }); + } + + /** + * Close the panel on Escape key press + */ + protected void escapeActionPerformed() + { + setVisible(false); + frame.dispose(); + } + + /** * Performs the 'Find Next' action. * * @param e @@ -182,7 +213,7 @@ public class Finder extends GFinder searchResults.getResultEnd(i), "Search Results"); } - if (ap.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(seqs, + if (ap.getSeqPanel().seqCanvas.getFeatureRenderer().amendFeatures(seqs, features, true, ap)) { ap.alignFrame.showSeqFeatures.setSelected(true); @@ -214,6 +245,8 @@ public class Finder extends GFinder jalview.analysis.Finder finder = new jalview.analysis.Finder( av.getAlignment(), av.getSelectionGroup(), seqIndex, resIndex); finder.setCaseSensitive(caseSensitive.isSelected()); + finder.setIncludeDescription(searchDescription.isSelected()); + finder.setFindAll(findAll); finder.find(searchString); // returns true if anything was actually found @@ -229,11 +262,11 @@ public class Finder extends GFinder if ((idMatch.size() > 0)) { haveResults = true; - ap.idPanel.highlightSearchResults(idMatch); + ap.getIdPanel().highlightSearchResults(idMatch); } else { - ap.idPanel.highlightSearchResults(null); + ap.getIdPanel().highlightSearchResults(null); } if (searchResults.getSize() > 0)