Merge branch 'features/JAL-1541_BioJsMSA' into develop
[jalview.git] / src / jalview / gui / Finder.java
index 04c512a..4397a48 100755 (executable)
@@ -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.
  * 
  */
 package jalview.gui;
 
-import jalview.datamodel.SearchResults;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceI;
-import jalview.jbgui.GFinder;
-import jalview.util.MessageManager;
-
 import java.awt.event.ActionEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.beans.PropertyVetoException;
 import java.util.Vector;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -35,6 +32,13 @@ import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 import javax.swing.JOptionPane;
 
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.jbgui.GFinder;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
+
 /**
  * Performs the menu option for searching the alignment, for the next or all
  * matches. If matches are found, they are highlighted, and the user has the
@@ -52,7 +56,7 @@ public class Finder extends GFinder
 
   private static final int WIDTH = 340;
 
-  AlignViewport av;
+  AlignmentViewport av;
 
   AlignmentPanel ap;
 
@@ -80,7 +84,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 +92,7 @@ public class Finder extends GFinder
     frame = new JInternalFrame();
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
+    addKeyListener();
     Desktop.addInternalFrame(frame, MessageManager.getString("label.find"),
             WIDTH, HEIGHT);
 
@@ -95,6 +100,39 @@ public class Finder extends GFinder
   }
 
   /**
+   * Add a key listener that closes the find dialog on 'Esc' key press
+   */
+  private void addKeyListener()
+  {
+    /*
+     * add the listener to the field with focus
+     */
+    textfield.addKeyListener(new KeyAdapter()
+    {
+      @Override
+      public void keyPressed(KeyEvent evt)
+      {
+        switch (evt.getKeyCode())
+        {
+        case 27:
+          // close this window on Esc key
+          Finder.this.setVisible(false);
+          try
+          {
+            Finder.this.frame.setClosed(true);
+          } catch (PropertyVetoException e)
+          {
+            // ignore
+          }
+          break;
+        default:
+          break;
+        }
+      }
+    });
+  }
+
+  /**
    * Performs the 'Find Next' action.
    * 
    * @param e