From 514995d140b14a5809629b6301d33c2702988f0e Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 22 Nov 2020 11:43:18 -0500 Subject: [PATCH] banktags: use script event for detecting bank search The bank plugin is being changed to manually initiate bank searches, by invoking the script, and the bank tabs plugin needs to be able to detect this search too. --- .../plugins/banktags/BankTagsPlugin.java | 7 ++++- .../plugins/banktags/tabs/TabInterface.java | 29 ++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) 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 d1e491e19e..1cffe75379 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 @@ -458,7 +458,8 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener @Subscribe public void onScriptPreFired(ScriptPreFired event) { - if (event.getScriptId() == ScriptID.BANKMAIN_FINISHBUILDING) + int scriptId = event.getScriptId(); + if (scriptId == ScriptID.BANKMAIN_FINISHBUILDING) { // Since we apply tag tab search filters even when the bank is not in search mode, // bankkmain_build will reset the bank title to "The Bank of Gielinor". So apply our @@ -476,6 +477,10 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener bankTitle.setText("Tag tab " + activeTab.getTag() + ""); } } + else if (scriptId == ScriptID.BANKMAIN_SEARCH_TOGGLE) + { + tabInterface.handleSearch(); + } } @Subscribe 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 ffaf7da3b0..0564d7b38b 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 @@ -347,7 +347,7 @@ public class TabInterface final Iterator dataIter = Text.fromCSV(dataString).iterator(); String name = dataIter.next(); - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); for (char c : name.toCharArray()) { if (FILTERED_CHARS.test(c)) @@ -369,7 +369,7 @@ public class TabInterface while (dataIter.hasNext()) { - final int itemId = Integer.valueOf(dataIter.next()); + final int itemId = Integer.parseInt(dataIter.next()); tagManager.addTag(itemId, name, itemId < 0); } @@ -656,16 +656,6 @@ public class TabInterface } if (activeTab != null - && event.getMenuOption().equals("Search") - && client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND).getSpriteId() != SpriteID.EQUIPMENT_SLOT_SELECTED) - { - activateTab(null); - // This ensures that when clicking Search when tab is selected, the search input is opened rather - // than client trying to close it first - client.setVar(VarClientStr.INPUT_TEXT, ""); - client.setVar(VarClientInt.INPUT_TYPE, 0); - } - else if (activeTab != null && (event.getMenuOption().startsWith("View tab") || event.getMenuOption().equals("View all items"))) { activateTab(null); @@ -696,6 +686,18 @@ public class TabInterface } } + public void handleSearch() + { + if (activeTab != null) + { + activateTab(null); + // This ensures that when clicking Search when tab is selected, the search input is opened rather + // than client trying to close it first + client.setVar(VarClientStr.INPUT_TEXT, ""); + client.setVar(VarClientInt.INPUT_TYPE, 0); + } + } + public void updateTabIfActive(final Collection tags) { if (activeTab != null && tags.contains(activeTab.getTag())) @@ -1158,11 +1160,10 @@ public class TabInterface t.revalidate(); } - private ItemComposition getItem(int idx) { ItemContainer bankContainer = client.getItemContainer(InventoryID.BANK); - Item item = bankContainer.getItems()[idx]; + Item item = bankContainer.getItem(idx); return itemManager.getItemComposition(item.getId()); }