diff --git a/src/main/java/workbench/gui/settings/ShortcutEditor.java b/src/main/java/workbench/gui/settings/ShortcutEditor.java index e4af924..bdf16df 100644 --- a/src/main/java/workbench/gui/settings/ShortcutEditor.java +++ b/src/main/java/workbench/gui/settings/ShortcutEditor.java @@ -39,12 +39,16 @@ import javax.swing.JButton; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.WindowConstants; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableColumn; @@ -88,7 +92,12 @@ private JButton resetAllButton; private JButton clearButton; + private JLabel searchLabel; + private JTextField searchField; + private String escActionCommand; + private String searchTerm = ""; + public ShortcutEditor(Frame fparent) { @@ -173,13 +182,44 @@ c.gridy ++; c.insets = new Insets(2,10,5,10); - c.weighty = 1.0; c.anchor = GridBagConstraints.NORTHWEST; this.resetAllButton = new WbButton(ResourceMgr.getString("LblResetAllShortcuts")); this.resetAllButton.setToolTipText(ResourceMgr.getDescription("LblResetAllShortcuts")); this.resetAllButton.addActionListener(this); editPanel.add(resetAllButton, c); + c.gridy ++; + c.insets = new Insets(15,10,5,10); + this.searchLabel = new JLabel(); + this.searchLabel.setText(ResourceMgr.getString("LblSearchShortcut")); + editPanel.add(searchLabel, c); + + c.gridy ++; + c.insets = new Insets(2,10,5,10); + c.weighty = 1.0; + this.searchField = new JTextField(); + this.searchField.getDocument().addDocumentListener(new DocumentListener() { + + @Override + public void insertUpdate(DocumentEvent e) { + search(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + search(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + search(); + } + + }); + this.searchField.setEnabled(true); + editPanel.add(searchField, c); + contentPanel.add(editPanel, BorderLayout.EAST); JPanel p = new JPanel(); @@ -232,9 +272,14 @@ String title = mgr.getActionNameForClass(cls); String tooltip = mgr.getTooltip(cls); ActionDisplay disp = new ActionDisplay(title, tooltip); - this.definitions.setValue(row, 0, disp); - this.definitions.setValue(row, 1, new ShortcutDisplay(key, ShortcutDisplay.TYPE_PRIMARY_KEY)); - this.definitions.setValue(row, 2, new ShortcutDisplay(key, ShortcutDisplay.TYPE_DEFAULT_KEY)); + if (disp.text.toLowerCase().contains(searchTerm.toLowerCase()) + || new ShortcutDisplay(key, ShortcutDisplay.TYPE_PRIMARY_KEY).toString().toLowerCase().contains(searchTerm.toLowerCase()) + || new ShortcutDisplay(key, ShortcutDisplay.TYPE_DEFAULT_KEY).toString().toLowerCase().contains(searchTerm.toLowerCase())) + { + this.definitions.setValue(row, 0, disp); + this.definitions.setValue(row, 1, new ShortcutDisplay(key, ShortcutDisplay.TYPE_PRIMARY_KEY)); + this.definitions.setValue(row, 2, new ShortcutDisplay(key, ShortcutDisplay.TYPE_DEFAULT_KEY)); + } } this.definitions.sortByColumn(0, true); this.definitions.resetStatus(); @@ -320,6 +365,12 @@ } } + private void search() + { + this.searchTerm = this.searchField.getText(); + this.createModel(); + } + private void closeWindow() { this.saveSettings(); diff --git a/src/main/resources/language/wbstrings.properties b/src/main/resources/language/wbstrings.properties index 45c866d..5c074b5 100644 --- a/src/main/resources/language/wbstrings.properties +++ b/src/main/resources/language/wbstrings.properties @@ -1790,6 +1790,7 @@ LblReplaceOrgSql=Replace original statement LblReqFldColor=Color for required fields LblResetAllShortcuts=Reset all +LblSearchShortcut=Search LblResetFont=Reset to default LblResetColor=Reset to default LblResetShortcut=Reset diff --git a/src/main/resources/language/wbstrings_de.properties b/src/main/resources/language/wbstrings_de.properties index 44d3691..422b9f3 100644 --- a/src/main/resources/language/wbstrings_de.properties +++ b/src/main/resources/language/wbstrings_de.properties @@ -1769,6 +1769,7 @@ LblReplaceOrgSql=Urspr\u00fcnglichen SQL Befehl ersetzen LblReqFldColor=Farbe f\u00fcr Pflichtfelder LblResetAllShortcuts=Alle zur\u00fccksetzen +LblSearchShortcut=Suche LblResetFont=Zur\u00fccksetzen LblResetColor=Zur\u00fccksetzen LblResetShortcut=Zur\u00fccksetzen