public void activateQuickSearch() {
        Logger.getLogger(TableSearcher.class.getName()).entering(TableSearcher.class.getName(), "activateQuickSearch");
        table.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(final KeyEvent evt) {
                Logger.getLogger(TableSearcher.class.getName()).entering(TableSearcher.class.getName(), "QuickSearchListener.keyPressed");
                char character = evt.getKeyChar();
                if (!Character.isLetterOrDigit(character) || evt.isMetaDown() || evt.isAltDown() || evt.isAltGraphDown() || evt.isControlDown()) {
                    Logger.getLogger(TableSearcher.class.getName()).exiting(TableSearcher.class.getName(), "QuickSearchListener.keyPressed");
                    return;
                }
                searchField.setText(String.valueOf(character));
                final Search searchClass = new Search();
                final JDialog jdialog = new JDialog((parentJDialog != null) ? parentJDialog : null);
                jdialog.setUndecorated(true);
                jdialog.setSize(150, 20);
                jdialog.setLocation(table.getTableHeader().getLocationOnScreen());
                jdialog.add(searchField);
                searchClass.search();
                searchField.getDocument().addDocumentListener(new DocumentListener() {

                    @Override
                    public void insertUpdate(final DocumentEvent e) {
                        searchClass.search();
                    }

                    @Override
                    public void removeUpdate(final DocumentEvent e) {
                        searchClass.search();
                    }

                    @Override
                    public void changedUpdate(final DocumentEvent e) {
                        searchClass.search();
                    }
                });
                searchField.addFocusListener(new FocusListener() {

                    @Override
                    public void focusGained(final FocusEvent e) {
                        searchField.setCaretPosition(searchField.getText().length());
                    }

                    @Override
                    public void focusLost(final FocusEvent e) {
                        jdialog.dispose();
                    }
                });
                AbstractAction exit = new AbstractAction() {

                    @Override
                    public void actionPerformed(final ActionEvent e) {
                        jdialog.dispose();
                    }
                };
                searchField.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                        KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "exit");
                searchField.getActionMap().put("exit", exit);
                searchField.setAction(exit);
                jdialog.setVisible(true);
                Logger.getLogger(TableSearcher.class.getName()).exiting(TableSearcher.class.getName(), "QuickSearchListener.keyPressed");
            }
        });
        TableModel tableModel = table.getModel();
        tableRowSorter = new TableRowSorter<>(tableModel);
        table.setRowSorter(tableRowSorter);
        Logger.getLogger(TableSearcher.class.getName()).entering(TableSearcher.class.getName(), "activateQuickSearch");
    }