From e046fb0166f1f15340df1d4443f25795ed4cf1d7 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 13 Mar 2022 14:55:52 +0000 Subject: [PATCH] some keyboard shortcuts for search focus and switching top-level tabs --- .../views/com/muwire/gui/MainFrameView.groovy | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index a52e452c..f4220720 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -8,18 +8,24 @@ import com.muwire.gui.chat.ChatFavorites import griffon.core.GriffonApplication import griffon.core.mvc.MVCGroup +import javax.swing.AbstractAction +import javax.swing.Action import javax.swing.DropMode import javax.swing.JButton import javax.swing.JPanel import javax.swing.JTabbedPane import javax.swing.JTextField +import javax.swing.KeyStroke import javax.swing.RowSorter import javax.swing.event.ChangeEvent import javax.swing.event.ChangeListener import javax.swing.tree.DefaultMutableTreeNode import java.awt.GridBagConstraints import java.awt.Image +import java.awt.KeyboardFocusManager import java.awt.Window +import java.awt.event.ActionEvent +import java.awt.event.KeyEvent import java.util.function.Predicate import static com.muwire.gui.Translator.trans @@ -836,7 +842,44 @@ class MainFrameView { }) // search field - def searchField = builder.getVariable("search-field") + JComponent searchField = builder.getVariable("search-field") + Action focusOnSearch = new AbstractAction() { + @Override + void actionPerformed(ActionEvent e) { + searchField.requestFocus() + } + } + JComponent rootPane = mainFrame.getRootPane() + rootPane.with { + registerKeyboardAction(focusOnSearch, + KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showSearchWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_1, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showDownloadsWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_2, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showUploadsWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_3, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showCollectionsWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_4, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showFeedsWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_5, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showMessagesWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_6, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showChatWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_7, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + registerKeyboardAction(showTrustWindow, + KeyStroke.getKeyStroke(KeyEvent.VK_8, KeyEvent.ALT_DOWN_MASK), + WHEN_IN_FOCUSED_WINDOW) + } + // downloads table def downloadsTable = builder.getVariable("downloads-table")