summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui
diff options
context:
space:
mode:
authorGravatar 2xsaiko2020-05-19 08:19:19 +0200
committerGravatar GitHub2020-05-19 02:19:19 -0400
commit2b906a2c19d9c564808d4391be90c84de3b17581 (patch)
tree0e9a72e9a8f6953346b041896c96e8209abc87ef /src/main/java/cuchaz/enigma/gui
parentQOL fixes - Volume 2 (#239) (diff)
downloadenigma-fork-2b906a2c19d9c564808d4391be90c84de3b17581.tar.gz
enigma-fork-2b906a2c19d9c564808d4391be90c84de3b17581.tar.xz
enigma-fork-2b906a2c19d9c564808d4391be90c84de3b17581.zip
Async search (#245)
* Async search * Define index when it's used
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui')
-rw-r--r--src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java b/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java
index b36ebfb..b283a37 100644
--- a/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java
+++ b/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java
@@ -36,12 +36,13 @@ import cuchaz.enigma.utils.search.SearchUtil;
36public class SearchDialog { 36public class SearchDialog {
37 37
38 private final JTextField searchField; 38 private final JTextField searchField;
39 private final DefaultListModel<SearchEntryImpl> classListModel; 39 private DefaultListModel<SearchEntryImpl> classListModel;
40 private final JList<SearchEntryImpl> classList; 40 private final JList<SearchEntryImpl> classList;
41 private final JDialog dialog; 41 private final JDialog dialog;
42 42
43 private final Gui parent; 43 private final Gui parent;
44 private final SearchUtil<SearchEntryImpl> su; 44 private final SearchUtil<SearchEntryImpl> su;
45 private SearchUtil.SearchControl currentSearch;
45 46
46 public SearchDialog(Gui parent) { 47 public SearchDialog(Gui parent) {
47 this.parent = parent; 48 this.parent = parent;
@@ -173,11 +174,13 @@ public class SearchDialog {
173 174
174 // Updates the list of class names 175 // Updates the list of class names
175 private void updateList() { 176 private void updateList() {
176 classListModel.clear(); 177 if (currentSearch != null) currentSearch.stop();
177 178
178 su.search(searchField.getText()) 179 DefaultListModel<SearchEntryImpl> classListModel = new DefaultListModel<>();
179 .limit(100) 180 this.classListModel = classListModel;
180 .forEach(classListModel::addElement); 181 classList.setModel(classListModel);
182
183 currentSearch = su.asyncSearch(searchField.getText(), (idx, e) -> SwingUtilities.invokeLater(() -> classListModel.insertElementAt(e, idx)));
181 } 184 }
182 185
183 public void dispose() { 186 public void dispose() {