fairyrings: Use ChatboxPanelManager's input
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user