From a430dc43a2c2a7feb0896757404f3244719de2f0 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Wed, 20 May 2015 10:34:42 +0100 Subject: [PATCH] JAL-796 JAL-1652 better implementation (key binding not KeyListener) --- src/jalview/gui/Finder.java | 47 ++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java index 4397a48..5d07562 100755 --- a/src/jalview/gui/Finder.java +++ b/src/jalview/gui/Finder.java @@ -21,16 +21,17 @@ package jalview.gui; 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; +import javax.swing.AbstractAction; +import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JOptionPane; +import javax.swing.KeyStroke; import jalview.datamodel.SearchResults; import jalview.datamodel.SequenceFeature; @@ -92,7 +93,7 @@ public class Finder extends GFinder frame = new JInternalFrame(); frame.setContentPane(this); frame.setLayer(JLayeredPane.PALETTE_LAYER); - addKeyListener(); + addEscapeHandler(); Desktop.addInternalFrame(frame, MessageManager.getString("label.find"), WIDTH, HEIGHT); @@ -100,39 +101,31 @@ public class Finder extends GFinder } /** - * Add a key listener that closes the find dialog on 'Esc' key press + * Add a handler for the Escape key when the window has focus */ - private void addKeyListener() + private void addEscapeHandler() { - /* - * add the listener to the field with focus - */ - textfield.addKeyListener(new KeyAdapter() + getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "Cancel"); + getRootPane().getActionMap().put("Cancel", new AbstractAction() { - @Override - public void keyPressed(KeyEvent evt) + public void actionPerformed(ActionEvent e) { - 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; - } + escapeActionPerformed(); } }); } /** + * Close the panel on Escape key press + */ + protected void escapeActionPerformed() + { + setVisible(false); + frame.dispose(); + } + + /** * Performs the 'Find Next' action. * * @param e -- 1.7.10.2