@Override public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if (keyCode == KeyEvent.VK_ESCAPE) { removeSearchField(); searchTextField.requestOriginalFocusOwner(); ignoreEvents = true; try { // Clear the text after ESC searchTextField.setText(""); // NOI18N } finally { ignoreEvents = false; } //fireQuickSearchCanceled(); callback.quickSearchCanceled(); hasSearchText = false; e.consume(); } else if (keyCode == KeyEvent.VK_UP || (keyCode == KeyEvent.VK_F3 && e.isShiftDown())) { fireShowNextSelection(false); // Stop processing the event here. Otherwise it's dispatched // to the tree too (which scrolls) e.consume(); } else if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_F3) { fireShowNextSelection(true); // Stop processing the event here. Otherwise it's dispatched // to the tree too (which scrolls) e.consume(); } else if (keyCode == KeyEvent.VK_TAB) { findMaxPrefix(searchTextField.getText(), new DataContentHandlerFactory() { @Override public DataContentHandler createDataContentHandler(final String maxPrefix) { if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { createDataContentHandler(maxPrefix); searchTextField.transferFocus(); } }); return null; } ignoreEvents = true; try { searchTextField.setText(maxPrefix); } finally { ignoreEvents = false; } return null; } }); e.consume(); } else if (keyCode == KeyEvent.VK_ENTER) { removeSearchField(); //fireQuickSearchConfirmed(); callback.quickSearchConfirmed(); component.requestFocusInWindow(); e.consume(); } }