fairyrings: Use ChatboxPanelManager's input

This commit is contained in:
Max Weber
2018-10-07 09:04:20 -06:00
parent 2434557e1a
commit 436529c01f

View File

@@ -39,21 +39,23 @@ import javax.inject.Inject;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.ScriptEvent;
import net.runelite.api.ScriptID; import net.runelite.api.ScriptID;
import net.runelite.api.SoundEffectID; import net.runelite.api.SoundEffectID;
import net.runelite.api.SpriteID; import net.runelite.api.SpriteID;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WidgetType; import net.runelite.api.WidgetType;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WidgetLoaded; import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ChatboxInputManager; import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.game.chatbox.ChatboxTextInput;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -82,11 +84,12 @@ public class FairyRingPlugin extends Plugin
private FairyRingConfig config; private FairyRingConfig config;
@Inject @Inject
private ChatboxInputManager chatboxInputManager; private ChatboxPanelManager chatboxPanelManager;
@Inject @Inject
private ClientThread clientThread; private ClientThread clientThread;
private ChatboxTextInput searchInput = null;
private Widget searchBtn; private Widget searchBtn;
private boolean chatboxOpenLastTick = false; private boolean chatboxOpenLastTick = false;
private Collection<CodeWidgets> codes = null; private Collection<CodeWidgets> codes = null;
@@ -132,9 +135,9 @@ public class FairyRingPlugin extends Plugin
searchBtn.setOriginalHeight(17); searchBtn.setOriginalHeight(17);
searchBtn.setOriginalX(11); searchBtn.setOriginalX(11);
searchBtn.setOriginalY(11); searchBtn.setOriginalY(11);
searchBtn.setOnOpListener(ScriptID.NULL);
searchBtn.setHasListener(true); searchBtn.setHasListener(true);
searchBtn.setAction(1, MENU_OPEN); searchBtn.setAction(1, MENU_OPEN);
searchBtn.setOnOpListener((JavaScriptCallback) this::menuOpen);
searchBtn.setName("Search"); searchBtn.setName("Search");
searchBtn.revalidate(); searchBtn.revalidate();
@@ -148,27 +151,17 @@ public class FairyRingPlugin extends Plugin
} }
} }
@Subscribe private void menuOpen(ScriptEvent e)
public void onMenuOptionClicked(MenuOptionClicked ev)
{ {
if (searchBtn != null && searchBtn.getId() == ev.getWidgetId()) openSearch();
{ client.playSoundEffect(SoundEffectID.UI_BOOP);
switch (ev.getMenuOption()) }
{
case MENU_OPEN: private void menuClose(ScriptEvent e)
ev.consume(); {
openSearch(); updateFilter("");
client.playSoundEffect(SoundEffectID.UI_BOOP); chatboxPanelManager.close();
break; client.playSoundEffect(SoundEffectID.UI_BOOP);
case MENU_CLOSE:
ev.consume();
updateFilter("");
searchBtn.setAction(1, MENU_OPEN);
chatboxInputManager.closeInputWindow();
client.playSoundEffect(SoundEffectID.UI_BOOP);
break;
}
}
} }
private void setWidgetTextToDestination() private void setWidgetTextToDestination()
@@ -201,13 +194,16 @@ public class FairyRingPlugin extends Plugin
{ {
updateFilter(""); updateFilter("");
searchBtn.setAction(1, MENU_CLOSE); searchBtn.setAction(1, MENU_CLOSE);
chatboxInputManager.openInputWindow("Filter fairy rings", "", ChatboxInputManager.NO_LIMIT, searchBtn.setOnOpListener((JavaScriptCallback) this::menuClose);
s -> clientThread.invokeLater(() -> updateFilter(s)), searchInput = chatboxPanelManager.openTextInput("Filter fairy rings")
s -> .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s)))
.onClose(() ->
{ {
clientThread.invokeLater(() -> updateFilter("")); clientThread.invokeLater(() -> updateFilter(""));
searchBtn.setOnOpListener((JavaScriptCallback) this::menuOpen);
searchBtn.setAction(1, MENU_OPEN); searchBtn.setAction(1, MENU_OPEN);
}); })
.build();
} }
@Subscribe @Subscribe
@@ -216,12 +212,11 @@ public class FairyRingPlugin extends Plugin
// This has to happen because the only widget that gets hidden is the tli one // This has to happen because the only widget that gets hidden is the tli one
Widget fairyRingTeleportButton = client.getWidget(WidgetInfo.FAIRY_RING_TELEPORT_BUTTON); Widget fairyRingTeleportButton = client.getWidget(WidgetInfo.FAIRY_RING_TELEPORT_BUTTON);
boolean fairyRingWidgetOpen = fairyRingTeleportButton != null && !fairyRingTeleportButton.isHidden(); boolean fairyRingWidgetOpen = fairyRingTeleportButton != null && !fairyRingTeleportButton.isHidden();
boolean chatboxOpen = chatboxInputManager.isOpen(); boolean chatboxOpen = chatboxPanelManager.getCurrentInput() == searchInput;
if (!fairyRingWidgetOpen && chatboxOpen && chatboxOpenLastTick) if (!fairyRingWidgetOpen && chatboxOpen && chatboxOpenLastTick)
{ {
searchBtn.setAction(1, MENU_OPEN); chatboxPanelManager.close();
chatboxInputManager.closeInputWindow();
} }
chatboxOpenLastTick = chatboxOpen && fairyRingWidgetOpen; chatboxOpenLastTick = chatboxOpen && fairyRingWidgetOpen;