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