diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java index ffc7e10dc5..4d2bfe8170 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java @@ -106,7 +106,7 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse private Runnable onClose = null; @Getter - private Consumer onDone = null; + private Predicate onDone = null; @Getter private Consumer onChanged = null; @@ -235,6 +235,20 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse } public ChatboxTextInput onDone(Consumer onDone) + { + this.onDone = (s) -> + { + onDone.accept(s); + return true; + }; + return this; + } + + /** + * Called when the user attempts to close the input by pressing enter + * Return false to cancel the close + */ + public ChatboxTextInput onDone(Predicate onDone) { this.onDone = onDone; return this; @@ -753,9 +767,9 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse break; case KeyEvent.VK_ENTER: ev.consume(); - if (onDone != null) + if (onDone != null && !onDone.test(getValue())) { - onDone.accept(getValue()); + return; } chatboxPanelManager.close(); return; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java index 8f2dbfc23e..08a0a3aab7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java @@ -37,6 +37,7 @@ import java.util.Collection; import java.util.Set; import java.util.TreeSet; import java.util.List; +import java.util.function.Consumer; import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.inject.Inject; @@ -407,7 +408,7 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis chatboxPanelManager.openTextInput(name + " tags:
(append " + VAR_TAG_SUFFIX + " for variation tag)") .addCharValidator(FILTERED_CHARS) .value(initialValue) - .onDone((newValue) -> + .onDone((Consumer) (newValue) -> clientThread.invoke(() -> { // Split inputted tags to vartags (ending with *) and regular tags diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java index 82a19b4f3d..21e0fa9f59 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java @@ -45,6 +45,7 @@ import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import java.util.Objects; +import java.util.function.Consumer; import java.util.function.IntPredicate; import java.util.stream.Collectors; import javax.inject.Inject; @@ -268,7 +269,7 @@ public class TabInterface chatboxPanelManager.openTextInput((inventory ? "Inventory " : "Equipment ") + " tags:") .addCharValidator(FILTERED_CHARS) - .onDone((newTags) -> + .onDone((Consumer) (newTags) -> clientThread.invoke(() -> { final List tags = Text.fromCSV(newTags.toLowerCase()); @@ -290,7 +291,7 @@ public class TabInterface case NewTab.NEW_TAB: chatboxPanelManager.openTextInput("Tag name") .addCharValidator(FILTERED_CHARS) - .onDone((tagName) -> clientThread.invoke(() -> + .onDone((Consumer) (tagName) -> clientThread.invoke(() -> { if (!Strings.isNullOrEmpty(tagName)) { @@ -908,7 +909,7 @@ public class TabInterface { chatboxPanelManager.openTextInput("Enter new tag name for tag \"" + oldTag + "\":") .addCharValidator(FILTERED_CHARS) - .onDone((newTag) -> clientThread.invoke(() -> + .onDone((Consumer) (newTag) -> clientThread.invoke(() -> { if (!Strings.isNullOrEmpty(newTag) && !newTag.equalsIgnoreCase(oldTag)) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java index 644c05859b..9f57996a27 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java @@ -196,6 +196,7 @@ public class FairyRingPlugin extends Plugin searchBtn.setOnOpListener((JavaScriptCallback) this::menuClose); searchInput = chatboxPanelManager.openTextInput("Filter fairy rings") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter("")); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java index 8205c3f3a3..c2db561546 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java @@ -321,6 +321,7 @@ public class MusicPlugin extends Plugin musicSearchButton.setOnOpListener((JavaScriptCallback) e -> closeSearch()); searchInput = chatboxPanelManager.openTextInput("Search music list") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s.trim()))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter("")); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java index 7243c24717..166ef3f669 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java @@ -233,6 +233,7 @@ public class QuestListPlugin extends Plugin questSearchButton.setOnOpListener((JavaScriptCallback) e -> closeSearch()); searchInput = chatboxPanelManager.openTextInput("Search quest list") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter(""));