Simplify navigation button code

Simplify code of the navigation button to also handle images and to
extend the swing JButton instead of wrapping it in getButton method.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2017-12-22 01:16:08 +01:00
committed by Adam
parent bb8f17d75e
commit 670ffe135f
7 changed files with 41 additions and 73 deletions

View File

@@ -34,7 +34,6 @@ import java.time.Instant;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.ImageIcon;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
@@ -73,18 +72,10 @@ public class AccountPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
loginButton = new NavigationButton("Login"); loginButton = new NavigationButton("Login", ImageIO.read(getClass().getResourceAsStream("login_icon.png")));
logoutButton = new NavigationButton("Logout"); logoutButton = new NavigationButton("Logout", ImageIO.read(getClass().getResourceAsStream("logout_icon.png")));
loginButton.addActionListener(this::loginClick);
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("login_icon.png"))); logoutButton.addActionListener(this::logoutClick);
loginButton.getButton().setIcon(icon);
icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("logout_icon.png")));
logoutButton.getButton().setIcon(icon);
loginButton.getButton().addActionListener(this::loginClick);
logoutButton.getButton().addActionListener(this::logoutClick);
ui.getPluginToolbar().addNavigation(loginButton); ui.getPluginToolbar().addNavigation(loginButton);
} }

View File

@@ -26,7 +26,6 @@ package net.runelite.client.plugins.config;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.ImageIcon;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -49,19 +48,11 @@ public class ConfigPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
navButton = new NavigationButton("Configuration", this::buildPanel); navButton = new NavigationButton(
"Configuration",
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("config_icon.png"))); ImageIO.read(getClass().getResourceAsStream("config_icon.png")),
navButton.getButton().setIcon(icon); () -> new ConfigPanel(configManager));
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);
} }
private ConfigPanel buildPanel()
{
ConfigPanel panel = new ConfigPanel(configManager);
panel.init();
return panel;
}
} }

View File

@@ -28,7 +28,6 @@ import com.google.inject.Binder;
import java.awt.Font; import java.awt.Font;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.ImageIcon;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -49,9 +48,6 @@ public class DevToolsPlugin extends Plugin
@Inject @Inject
DevToolsOverlay overlay; DevToolsOverlay overlay;
private NavigationButton navButton;
private DevToolsPanel panel;
private boolean togglePlayers; private boolean togglePlayers;
private boolean toggleNpcs; private boolean toggleNpcs;
private boolean toggleGroundItems; private boolean toggleGroundItems;
@@ -76,11 +72,11 @@ public class DevToolsPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
panel = injector.getInstance(DevToolsPanel.class); final DevToolsPanel panel = injector.getInstance(DevToolsPanel.class);
navButton = new NavigationButton("Developer Tools", () -> panel); final NavigationButton navButton = new NavigationButton(
"Developer Tools",
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("devtools_icon.png"))); ImageIO.read(getClass().getResourceAsStream("devtools_icon.png")),
navButton.getButton().setIcon(icon); () -> panel);
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);

View File

@@ -28,7 +28,6 @@ import com.google.common.eventbus.Subscribe;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.ImageIcon;
import net.runelite.client.events.PlayerMenuOptionClicked; import net.runelite.client.events.PlayerMenuOptionClicked;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -58,11 +57,11 @@ public class HiscorePlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
navButton = new NavigationButton("Hiscore", () -> hiscorePanel);
hiscorePanel = injector.getInstance(HiscorePanel.class); hiscorePanel = injector.getInstance(HiscorePanel.class);
navButton = new NavigationButton(
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("hiscore.gif"))); "Hiscore",
navButton.getButton().setIcon(icon); ImageIO.read(getClass().getResourceAsStream("hiscore.gif")),
() -> hiscorePanel);
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);

View File

@@ -26,7 +26,6 @@ package net.runelite.client.plugins.xptracker;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Skill; import net.runelite.api.Skill;
@@ -62,9 +61,12 @@ public class XpTrackerPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
navButton = new NavigationButton("XP Tracker", () -> xpPanel);
xpPanel = injector.getInstance(XpPanel.class); xpPanel = injector.getInstance(XpPanel.class);
navButton.getButton().setIcon(new ImageIcon(ImageIO.read(getClass().getResourceAsStream("xp.png")))); navButton = new NavigationButton(
"XP Tracker",
ImageIO.read(getClass().getResourceAsStream("xp.png")),
() -> xpPanel);
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);
} }

View File

@@ -24,40 +24,29 @@
*/ */
package net.runelite.client.ui; package net.runelite.client.ui;
import java.awt.Image;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.swing.ImageIcon;
import javax.swing.JButton; import javax.swing.JButton;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
public class NavigationButton @Slf4j
public class NavigationButton extends JButton
{ {
private final JButton button = new JButton(); @Getter
private final Supplier<PluginPanel> panelSupplier; private final Supplier<PluginPanel> panelSupplier;
private String name; public NavigationButton(String name, Image icon)
public NavigationButton(String name)
{ {
this.name = name; this(name, icon, null);
this.panelSupplier = null;
} }
public NavigationButton(String name, Supplier<PluginPanel> panelSupplier) public NavigationButton(String name, Image icon, Supplier<PluginPanel> panelSupplier)
{ {
this.name = name; super();
setToolTipText(name);
setIcon(new ImageIcon(icon));
this.panelSupplier = panelSupplier; this.panelSupplier = panelSupplier;
} }
public JButton getButton()
{
return button;
}
public Supplier<PluginPanel> getPanelSupplier()
{
return panelSupplier;
}
public String getName()
{
return name;
}
} }

View File

@@ -52,18 +52,18 @@ public class PluginToolbar extends JToolBar
public void addNavigation(NavigationButton button) public void addNavigation(NavigationButton button)
{ {
button.getButton().addActionListener((ae) -> onClick(button)); button.addActionListener((ae) -> onClick(button));
button.getButton().setToolTipText(button.getName()); button.setToolTipText(button.getName());
buttons.add(button); buttons.add(button);
add(button.getButton()); add(button);
revalidate(); revalidate();
} }
public void removeNavigation(NavigationButton button) public void removeNavigation(NavigationButton button)
{ {
buttons.remove(button); buttons.remove(button);
remove(button.getButton()); remove(button);
revalidate(); revalidate();
} }
@@ -77,7 +77,7 @@ public class PluginToolbar extends JToolBar
if (current != null) if (current != null)
{ {
current.getButton().setSelected(false); current.setSelected(false);
} }
if (current == button) if (current == button)
@@ -92,7 +92,7 @@ public class PluginToolbar extends JToolBar
ui.expand(pluginPanel); ui.expand(pluginPanel);
current = button; current = button;
current.getButton().setSelected(true); current.setSelected(true);
} }
} }
} }