diff options
| author | 2019-05-12 11:04:22 +0200 | |
|---|---|---|
| committer | 2019-05-12 11:04:22 +0200 | |
| commit | 06efc97fa238cadf70c04a494b166d69358e9b0e (patch) | |
| tree | 17cc60c571314f206ce9815746370196bc1f153b /src/main/java/cuchaz/enigma/gui/QuickFindAction.java | |
| parent | Add forward and backward reference history with mouse navigation (#132) (diff) | |
| download | enigma-fork-06efc97fa238cadf70c04a494b166d69358e9b0e.tar.gz enigma-fork-06efc97fa238cadf70c04a494b166d69358e9b0e.tar.xz enigma-fork-06efc97fa238cadf70c04a494b166d69358e9b0e.zip | |
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
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/QuickFindAction.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/QuickFindAction.java | 45 |
1 files changed, 45 insertions, 0 deletions
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 @@ | |||
| 1 | package cuchaz.enigma.gui; | ||
| 2 | |||
| 3 | import de.sciss.syntaxpane.SyntaxDocument; | ||
| 4 | import de.sciss.syntaxpane.actions.DefaultSyntaxAction; | ||
| 5 | |||
| 6 | import javax.swing.text.JTextComponent; | ||
| 7 | import java.awt.event.ActionEvent; | ||
| 8 | |||
| 9 | public final class QuickFindAction extends DefaultSyntaxAction { | ||
| 10 | public QuickFindAction() { | ||
| 11 | super("quick-find"); | ||
| 12 | } | ||
| 13 | |||
| 14 | @Override | ||
| 15 | public void actionPerformed(JTextComponent target, SyntaxDocument document, int dot, ActionEvent event) { | ||
| 16 | Data data = Data.get(target); | ||
| 17 | data.showFindDialog(target); | ||
| 18 | } | ||
| 19 | |||
| 20 | private static class Data { | ||
| 21 | private static final String KEY = "enigma-find-data"; | ||
| 22 | private EnigmaQuickFindDialog findDialog; | ||
| 23 | |||
| 24 | private Data() { | ||
| 25 | } | ||
| 26 | |||
| 27 | public static Data get(JTextComponent target) { | ||
| 28 | Object o = target.getDocument().getProperty(KEY); | ||
| 29 | if (o instanceof Data) { | ||
| 30 | return (Data) o; | ||
| 31 | } | ||
| 32 | |||
| 33 | Data data = new Data(); | ||
| 34 | target.getDocument().putProperty(KEY, data); | ||
| 35 | return data; | ||
| 36 | } | ||
| 37 | |||
| 38 | public void showFindDialog(JTextComponent target) { | ||
| 39 | if (findDialog == null) { | ||
| 40 | findDialog = new EnigmaQuickFindDialog(target); | ||
| 41 | } | ||
| 42 | findDialog.showFor(target); | ||
| 43 | } | ||
| 44 | } | ||
| 45 | } | ||