searchdialog, file view improved

This commit is contained in:
rdavidek 2026-01-21 18:55:29 +01:00
parent 4f15bac6ff
commit 8d012dd14f
2 changed files with 23 additions and 19 deletions

View File

@ -123,7 +123,7 @@ public class FileEditor extends JDialog {
searchPanel.setVisible(false); searchPanel.setVisible(false);
} }
private void showSearchPanel() { private void showSearchPanel(boolean focusField) {
searchPanel.setVisible(true); searchPanel.setVisible(true);
String selection = textArea.getSelectedText(); String selection = textArea.getSelectedText();
if (selection != null && !selection.isEmpty() && !selection.contains("\n")) { if (selection != null && !selection.isEmpty() && !selection.contains("\n")) {
@ -139,6 +139,7 @@ public class FileEditor extends JDialog {
} }
} }
if (focusField) {
searchField.requestFocusInWindow(); searchField.requestFocusInWindow();
searchField.selectAll(); searchField.selectAll();
@ -146,6 +147,9 @@ public class FileEditor extends JDialog {
searchField.requestFocusInWindow(); searchField.requestFocusInWindow();
searchField.selectAll(); searchField.selectAll();
}); });
} else {
textArea.requestFocusInWindow();
}
if (northPanel != null) { if (northPanel != null) {
northPanel.revalidate(); northPanel.revalidate();
@ -483,7 +487,7 @@ public class FileEditor extends JDialog {
JMenuItem findItem = new JMenuItem("Hledat..."); JMenuItem findItem = new JMenuItem("Hledat...");
findItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK)); findItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK));
findItem.addActionListener(e -> showSearchPanel()); findItem.addActionListener(e -> showSearchPanel(true));
editMenu.add(findItem); editMenu.add(findItem);
JMenuItem findNextItem = new JMenuItem("Hledat další"); JMenuItem findNextItem = new JMenuItem("Hledat další");
@ -559,14 +563,8 @@ public class FileEditor extends JDialog {
JComponent.WHEN_IN_FOCUSED_WINDOW); JComponent.WHEN_IN_FOCUSED_WINDOW);
} }
// ESC - Zavřít nebo skrýt hledání // ESC - Zavřít view
rootPane.registerKeyboardAction(e -> { rootPane.registerKeyboardAction(e -> closeEditor(),
if (searchPanel != null && searchPanel.isVisible()) {
hideSearchPanel();
} else {
closeEditor();
}
},
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW); JComponent.WHEN_IN_FOCUSED_WINDOW);
@ -577,9 +575,10 @@ public class FileEditor extends JDialog {
return; return;
} }
if (!searchPanel.isVisible()) { if (!searchPanel.isVisible()) {
showSearchPanel(); showSearchPanel(false);
} }
findNext(); findNext();
textArea.requestFocusInWindow();
}, },
KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW); JComponent.WHEN_IN_FOCUSED_WINDOW);
@ -647,12 +646,15 @@ public class FileEditor extends JDialog {
// Hledání // Hledání
rootPane.registerKeyboardAction(e -> { rootPane.registerKeyboardAction(e -> {
if (!isImageFile(file)) showSearchPanel(); if (!isImageFile(file)) showSearchPanel(true);
}, },
KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK),
JComponent.WHEN_IN_FOCUSED_WINDOW); JComponent.WHEN_IN_FOCUSED_WINDOW);
rootPane.registerKeyboardAction(e -> findPrevious(), rootPane.registerKeyboardAction(e -> {
findPrevious();
textArea.requestFocusInWindow();
},
KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_DOWN_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_DOWN_MASK),
JComponent.WHEN_IN_FOCUSED_WINDOW); JComponent.WHEN_IN_FOCUSED_WINDOW);
} }

View File

@ -290,13 +290,14 @@ public class SearchDialog extends JDialog {
@Override @Override
public void actionPerformed(java.awt.event.ActionEvent e) { public void actionPerformed(java.awt.event.ActionEvent e) {
try { try {
// If the popup is visible, treat Enter as "confirm selection" and proceed to search // If the popup is visible, treat Enter as "confirm selection": fill editor and close popup
if (patternCombo.isPopupVisible()) { if (patternCombo.isPopupVisible()) {
Object sel = patternCombo.getSelectedItem(); Object sel = patternCombo.getSelectedItem();
if (sel != null) { if (sel != null) {
patternCombo.getEditor().setItem(sel.toString()); patternCombo.getEditor().setItem(sel.toString());
} }
patternCombo.hidePopup(); patternCombo.hidePopup();
return; // Do not start search yet
} }
} catch (Exception ignore) {} } catch (Exception ignore) {}
// Actual confirm to start search // Actual confirm to start search
@ -319,6 +320,7 @@ public class SearchDialog extends JDialog {
Object sel = contentPatternCombo.getSelectedItem(); Object sel = contentPatternCombo.getSelectedItem();
if (sel != null) contentPatternCombo.getEditor().setItem(sel.toString()); if (sel != null) contentPatternCombo.getEditor().setItem(sel.toString());
contentPatternCombo.hidePopup(); contentPatternCombo.hidePopup();
return; // Do not start search yet
} }
} catch (Exception ignore) {} } catch (Exception ignore) {}
performSearch(); performSearch();