From 2b906a2c19d9c564808d4391be90c84de3b17581 Mon Sep 17 00:00:00 2001 From: 2xsaiko Date: Tue, 19 May 2020 08:19:19 +0200 Subject: Async search (#245) * Async search * Define index when it's used--- src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma/gui') 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; public class SearchDialog { private final JTextField searchField; - private final DefaultListModel classListModel; + private DefaultListModel classListModel; private final JList classList; private final JDialog dialog; private final Gui parent; private final SearchUtil su; + private SearchUtil.SearchControl currentSearch; public SearchDialog(Gui parent) { this.parent = parent; @@ -173,11 +174,13 @@ public class SearchDialog { // Updates the list of class names private void updateList() { - classListModel.clear(); + if (currentSearch != null) currentSearch.stop(); - su.search(searchField.getText()) - .limit(100) - .forEach(classListModel::addElement); + DefaultListModel classListModel = new DefaultListModel<>(); + this.classListModel = classListModel; + classList.setModel(classListModel); + + currentSearch = su.asyncSearch(searchField.getText(), (idx, e) -> SwingUtilities.invokeLater(() -> classListModel.insertElementAt(e, idx))); } public void dispose() { -- cgit v1.2.3