From 6ad095d8cfc5fcc1e07d5a1eeb9d9853a190e5a5 Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Thu, 6 Aug 2026 12:51:35 +0200 Subject: [PATCH] added context menu for adding entries in empty space of the entry table --- .../java/cz/kamma/jkeepass/KeepassApp.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/cz/kamma/jkeepass/KeepassApp.java b/src/main/java/cz/kamma/jkeepass/KeepassApp.java index 3a42461..bfc6732 100644 --- a/src/main/java/cz/kamma/jkeepass/KeepassApp.java +++ b/src/main/java/cz/kamma/jkeepass/KeepassApp.java @@ -396,6 +396,36 @@ public class KeepassApp extends JFrame { }); JScrollPane tableScrollPane = new JScrollPane(entryTable); + // Add popup menu for empty space in table scrollpane + tableScrollPane.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + showEmptySpacePopupMenu(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + showEmptySpacePopupMenu(e); + } + + private void showEmptySpacePopupMenu(MouseEvent e) { + if (!e.isPopupTrigger()) { + return; + } + // Check if click is actually in empty space (not on a row) + int row = entryTable.rowAtPoint(e.getPoint()); + if (row >= 0) { + return; // Click is on a row, let the table's mouse listener handle it + } + + JPopupMenu popup = new JPopupMenu(); + JMenuItem addPop = new JMenuItem("Add Entry"); + addPop.addActionListener(al -> addEntry()); + popup.add(addPop); + popup.show(e.getComponent(), e.getX(), e.getY()); + } + }); + // Right side: Table and Notes rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, tableScrollPane, notesScrollPane); int rightDivider = prefs.getInt(PREF_RIGHT_DIVIDER, 250);