diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java index 2de1e6d9d1..b9fa210bb9 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java @@ -25,6 +25,8 @@ package net.runelite.client.config; import java.awt.Dimension; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; import net.runelite.api.Constants; import net.runelite.client.Notifier; import net.runelite.client.ui.ContainableFrame; @@ -288,4 +290,26 @@ public interface RuneLiteConfig extends Config { return true; } + + @ConfigItem( + keyName = "sidebarToggleKey", + name = "Sidebar Toggle Key", + description = "The key that will toggle the sidebar (accepts modifiers)", + position = 44 + ) + default Keybind sidebarToggleKey() + { + return new Keybind(KeyEvent.VK_F11, InputEvent.CTRL_DOWN_MASK); + } + + @ConfigItem( + keyName = "panelToggleKey", + name = "Plugin Panel Toggle Key", + description = "The key that will toggle the current or last opened plugin panel (accepts modifiers)", + position = 45 + ) + default Keybind panelToggleKey() + { + return new Keybind(KeyEvent.VK_F12, InputEvent.CTRL_DOWN_MASK); + } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index 2dd8b030a5..cb4257b79e 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -39,8 +39,6 @@ import java.awt.LayoutManager; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.TrayIcon; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; @@ -77,7 +75,6 @@ import net.runelite.client.RuneLiteProperties; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ExpandResizeType; -import net.runelite.client.config.Keybind; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.WarningOnExit; import net.runelite.client.eventbus.Subscribe; @@ -374,8 +371,7 @@ public class ClientUI frame.add(container); // Add key listener - final HotkeyListener sidebarListener = new HotkeyListener(() -> - new Keybind(KeyEvent.VK_F11, InputEvent.CTRL_DOWN_MASK)) + final HotkeyListener sidebarListener = new HotkeyListener(config::sidebarToggleKey) { @Override public void hotkeyPressed() @@ -387,6 +383,17 @@ public class ClientUI sidebarListener.setEnabledOnLogin(true); keyManager.registerKeyListener(sidebarListener); + final HotkeyListener pluginPanelListener = new HotkeyListener(config::panelToggleKey) + { + @Override + public void hotkeyPressed() + { + togglePluginPanel(); + } + }; + + keyManager.registerKeyListener(pluginPanelListener); + // Add mouse listener final MouseListener mouseListener = new MouseAdapter() { @@ -840,6 +847,26 @@ public class ClientUI } } + private void togglePluginPanel() + { + // Toggle plugin panel open + final boolean pluginPanelOpen = pluginPanel != null; + + if (currentButton != null) + { + currentButton.setSelected(!pluginPanelOpen); + } + + if (pluginPanelOpen) + { + contract(); + } + else + { + expand(currentNavButton); + } + } + private void expand(@Nullable NavigationButton button) { if (button == null)