summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java
diff options
context:
space:
mode:
authorGravatar Runemoro2020-06-03 13:39:42 -0400
committerGravatar GitHub2020-06-03 18:39:42 +0100
commit0f47403d0220757fed189b76e2071e25b1025cb8 (patch)
tree879bf72c4476f0a5e0d82da99d7ff2b2276bcaca /src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java
parentFix search dialog hanging for a short time sometimes (#250) (diff)
downloadenigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.gz
enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.xz
enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.zip
Split GUI code to separate module (#242)
* Split into modules * Post merge compile fixes Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java')
-rw-r--r--src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java90
1 files changed, 0 insertions, 90 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java b/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java
deleted file mode 100644
index c912be3..0000000
--- a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java
+++ /dev/null
@@ -1,90 +0,0 @@
1package cuchaz.enigma.gui;
2
3import de.sciss.syntaxpane.actions.DocumentSearchData;
4import de.sciss.syntaxpane.actions.gui.QuickFindDialog;
5
6import javax.swing.*;
7import javax.swing.text.JTextComponent;
8import java.awt.*;
9import java.awt.event.KeyAdapter;
10import java.awt.event.KeyEvent;
11import java.util.stream.IntStream;
12import java.util.stream.Stream;
13
14public class EnigmaQuickFindDialog extends QuickFindDialog {
15 public EnigmaQuickFindDialog(JTextComponent target) {
16 super(target, DocumentSearchData.getFromEditor(target));
17
18 JToolBar toolBar = getToolBar();
19 JTextField textField = getTextField(toolBar);
20
21 textField.addKeyListener(new KeyAdapter() {
22 @Override
23 public void keyPressed(KeyEvent e) {
24 super.keyPressed(e);
25 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
26 JToolBar toolBar = getToolBar();
27 boolean next = !e.isShiftDown();
28 JButton button = next ? getNextButton(toolBar) : getPrevButton(toolBar);
29 button.doClick();
30 }
31 }
32 });
33 }
34
35 @Override
36 public void showFor(JTextComponent target) {
37 String selectedText = target.getSelectedText();
38
39 try {
40 super.showFor(target);
41 } catch (Exception e) {
42 e.printStackTrace();
43 return;
44 }
45
46 Container view = target.getParent();
47 Point loc = new Point(0, view.getHeight() - getSize().height);
48 setLocationRelativeTo(view);
49 SwingUtilities.convertPointToScreen(loc, view);
50 setLocation(loc);
51
52 JToolBar toolBar = getToolBar();
53 JTextField textField = getTextField(toolBar);
54
55 if (selectedText != null) {
56 textField.setText(selectedText);
57 }
58
59 textField.selectAll();
60 }
61
62 private JToolBar getToolBar() {
63 return components(getContentPane(), JToolBar.class).findFirst().orElse(null);
64 }
65
66 private JTextField getTextField(JToolBar toolBar) {
67 return components(toolBar, JTextField.class).findFirst().orElse(null);
68 }
69
70 private JButton getNextButton(JToolBar toolBar) {
71 Stream<JButton> buttons = components(toolBar, JButton.class);
72 return buttons.skip(1).findFirst().orElse(null);
73 }
74
75 private JButton getPrevButton(JToolBar toolBar) {
76 Stream<JButton> buttons = components(toolBar, JButton.class);
77 return buttons.findFirst().orElse(null);
78 }
79
80 private static Stream<Component> components(Container container) {
81 return IntStream.range(0, container.getComponentCount())
82 .mapToObj(container::getComponent);
83 }
84
85 private static <T extends Component> Stream<T> components(Container container, Class<T> type) {
86 return components(container)
87 .filter(type::isInstance)
88 .map(type::cast);
89 }
90}