From 2706199944d32b1a24bfe1157a1abe53fa6f608e Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 4 Apr 2020 15:29:01 -0400 Subject: [PATCH] chatboxtextinput: conditionally close input from ondone callback --- .../client/game/chatbox/ChatboxTextInput.java | 20 ++++++++++++++++--- .../plugins/banktags/BankTagsPlugin.java | 3 ++- .../plugins/banktags/tabs/TabInterface.java | 7 ++++--- 3 files changed, 23 insertions(+), 7 deletions(-) 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)) {