From 3225f17050a2f71b9bdc0da1c3c2e6ea7ba2ad8d Mon Sep 17 00:00:00 2001 From: rdavidek Date: Sun, 25 Jan 2026 22:53:00 +0100 Subject: [PATCH] windows shif+delete --- .../java/cz/kamma/kfmanager/ui/FilePanel.java | 13 +++++++++++++ .../java/cz/kamma/kfmanager/ui/MainWindow.java | 17 +++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/cz/kamma/kfmanager/ui/FilePanel.java b/src/main/java/cz/kamma/kfmanager/ui/FilePanel.java index 42661ae..505db50 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FilePanel.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FilePanel.java @@ -19,6 +19,7 @@ public class FilePanel extends JPanel { private JLabel driveInfoLabel; private cz.kamma.kfmanager.config.AppConfig appConfig; private Runnable onDirectoryChangedAll; + private java.util.function.Consumer onTableCreated; private boolean ignoreComboActions = false; private boolean active = false; @@ -31,6 +32,10 @@ public class FilePanel extends JPanel { this.onDirectoryChangedAll = callback; } + public void setOnTableCreated(java.util.function.Consumer callback) { + this.onTableCreated = callback; + } + /** Start inline rename on the currently selected tab/table. */ public void startInlineRename() { FilePanelTab tab = getCurrentTab(); @@ -290,6 +295,10 @@ public class FilePanel extends JPanel { // Update path field updateTabStyles(); + + if (onTableCreated != null) { + onTableCreated.accept(tab.getFileTable()); + } // Set focus to the table in the new tab SwingUtilities.invokeLater(() -> { @@ -332,6 +341,10 @@ public class FilePanel extends JPanel { updatePathField(); updateTabStyles(); + if (onTableCreated != null) { + onTableCreated.accept(tab.getFileTable()); + } + SwingUtilities.invokeLater(() -> { if (requestFocus) { tab.getFileTable().requestFocusInWindow(); diff --git a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java index 71b2ce4..efbc48c 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java +++ b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java @@ -113,6 +113,10 @@ public class MainWindow extends JFrame { // Provide a callback so tabs inside the panel can request switching panels with TAB leftPanel.setSwitchPanelCallback(() -> switchPanelsFromChild()); leftPanel.setOnDirectoryChangedAll(() -> updateCommandLinePrompt()); + leftPanel.setOnTableCreated(table -> { + addTabKeyHandler(table); + addCommandLineRedirect(table); + }); // Load and set ViewMode for left panel try { @@ -129,6 +133,10 @@ public class MainWindow extends JFrame { // Provide a callback so tabs inside the panel can request switching panels with TAB rightPanel.setSwitchPanelCallback(() -> switchPanelsFromChild()); rightPanel.setOnDirectoryChangedAll(() -> updateCommandLinePrompt()); + rightPanel.setOnTableCreated(table -> { + addTabKeyHandler(table); + addCommandLineRedirect(table); + }); // Load and set ViewMode for right panel try { @@ -1138,6 +1146,9 @@ public class MainWindow extends JFrame { rootPane.registerKeyboardAction(e -> deleteFiles(), KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, InputEvent.SHIFT_DOWN_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); + rootPane.registerKeyboardAction(e -> deleteFiles(), + KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, InputEvent.SHIFT_MASK), + JComponent.WHEN_IN_FOCUSED_WINDOW); // No direct F9 keyboard binding: inline rename should only be triggered by Shift+F6 @@ -1324,7 +1335,7 @@ public class MainWindow extends JFrame { /** * Attach TAB handling to switch panels */ - private void addTabKeyHandler(JTable table) { + public void addTabKeyHandler(JTable table) { if (table == null) return; // Remove standard Swing TAB behavior @@ -1364,6 +1375,8 @@ public class MainWindow extends JFrame { // Also map Shift+Delete on table level table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, InputEvent.SHIFT_DOWN_MASK), "deleteFiles"); + table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) + .put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, InputEvent.SHIFT_MASK), "deleteFiles"); // Clipboard support (Ctrl+C, Ctrl+X, Ctrl+V) table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) @@ -1437,7 +1450,7 @@ public class MainWindow extends JFrame { /** * Automatically focus command line when user starts typing on a table */ - private void addCommandLineRedirect(JTable table) { + public void addCommandLineRedirect(JTable table) { // Use InputMap/ActionMap for Ctrl+Enter and Ctrl+Shift+Enter as KeyListener might be bypassed by JTable table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK), "copyNameToCmd");