3 import java.awt.event.ActionEvent;
\r
4 import java.awt.event.KeyEvent;
\r
5 import java.util.ArrayList;
\r
7 import javax.swing.AbstractAction;
\r
8 import javax.swing.ActionMap;
\r
9 import javax.swing.InputMap;
\r
10 import javax.swing.JComponent;
\r
11 import javax.swing.JTextField;
\r
12 import javax.swing.KeyStroke;
\r
14 public class JTextFieldWithPopup extends JTextField {
\r
16 private static final long serialVersionUID = 1L;
\r
18 private static final String ESCKEYACTION = "escape-cancel";
\r
20 public JTextFieldWithPopup() {
\r
22 this.addMouseListener(new TextEditPopupMenu());
\r
24 InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
\r
25 ActionMap am = this.getActionMap();
\r
26 im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ESCKEYACTION);
\r
27 am.put(ESCKEYACTION, new CancelAction());
\r
30 public JTextFieldWithPopup(int col) {
\r
32 this.addMouseListener(new TextEditPopupMenu());
\r
34 InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
\r
35 ActionMap am = this.getActionMap();
\r
36 im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ESCKEYACTION);
\r
37 am.put(ESCKEYACTION, new CancelAction());
\r
42 private class CancelAction extends AbstractAction {
\r
44 private static final long serialVersionUID = 1L;
\r
47 public void actionPerformed(ActionEvent e) {
\r
48 JTextFieldWithPopup jtf = (JTextFieldWithPopup) e.getSource();
\r
50 CancelEvent ev = new CancelEvent(jtf, CancelEvent.Cause.TOOLBAR_SEARCH);
\r
51 for ( CancelListener l : cancel_listeners ) {
\r
59 private ArrayList<CancelListener> cancel_listeners = new ArrayList<CancelListener>();
\r
61 public void addCancelListener(CancelListener l) {
\r
62 if ( ! cancel_listeners.contains(l) ) {
\r
63 cancel_listeners.add(l);
\r
67 public void removeCancelListener(CancelListener l) {
\r
68 cancel_listeners.remove(l);
\r