From 06efc97fa238cadf70c04a494b166d69358e9b0e Mon Sep 17 00:00:00 2001 From: Gegy Date: Sun, 12 May 2019 11:04:22 +0200 Subject: Quick find fixes (#133) * Correctly offset quick find dialog, select all text on Ctrl+F, and set text to highlighted on open * Support quick find navigation with enter & shift+enter --- .../java/cuchaz/enigma/gui/QuickFindAction.java | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/cuchaz/enigma/gui/QuickFindAction.java (limited to 'src/main/java/cuchaz/enigma/gui/QuickFindAction.java') diff --git a/src/main/java/cuchaz/enigma/gui/QuickFindAction.java b/src/main/java/cuchaz/enigma/gui/QuickFindAction.java new file mode 100644 index 0000000..b7fa2eb --- /dev/null +++ b/src/main/java/cuchaz/enigma/gui/QuickFindAction.java @@ -0,0 +1,45 @@ +package cuchaz.enigma.gui; + +import de.sciss.syntaxpane.SyntaxDocument; +import de.sciss.syntaxpane.actions.DefaultSyntaxAction; + +import javax.swing.text.JTextComponent; +import java.awt.event.ActionEvent; + +public final class QuickFindAction extends DefaultSyntaxAction { + public QuickFindAction() { + super("quick-find"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument document, int dot, ActionEvent event) { + Data data = Data.get(target); + data.showFindDialog(target); + } + + private static class Data { + private static final String KEY = "enigma-find-data"; + private EnigmaQuickFindDialog findDialog; + + private Data() { + } + + public static Data get(JTextComponent target) { + Object o = target.getDocument().getProperty(KEY); + if (o instanceof Data) { + return (Data) o; + } + + Data data = new Data(); + target.getDocument().putProperty(KEY, data); + return data; + } + + public void showFindDialog(JTextComponent target) { + if (findDialog == null) { + findDialog = new EnigmaQuickFindDialog(target); + } + findDialog.showFor(target); + } + } +} -- cgit v1.2.3