From 9b65de74ee0ad4472f51e33e57c8a7d6fd78f9d9 Mon Sep 17 00:00:00 2001 From: Su-Shing Chen Date: Sat, 20 Jun 2020 15:41:25 +1200 Subject: [PATCH] ge plugin: add GE links to the offers panel This allows looking up GE prices for items already on offer, without the need to manually search for the item on the Search tab. Accessed via a new popup menu. --- .../grandexchange/GrandExchangeItemPanel.java | 17 +++-------------- .../grandexchange/GrandExchangeOfferSlot.java | 19 +++++++++++++++---- .../grandexchange/GrandExchangePlugin.java | 10 ++++++++++ 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeItemPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeItemPanel.java index 8b43715150..b833c4ab41 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeItemPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeItemPanel.java @@ -39,9 +39,8 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; -import net.runelite.client.util.AsyncBufferedImage; import net.runelite.client.ui.ColorScheme; -import net.runelite.client.util.LinkBrowser; +import net.runelite.client.util.AsyncBufferedImage; import net.runelite.client.util.QuantityFormatter; /** @@ -90,7 +89,7 @@ class GrandExchangeItemPanel extends JPanel @Override public void mouseReleased(MouseEvent e) { - geLink(name, itemID); + GrandExchangePlugin.openGeLink(name, itemID); } }; @@ -164,14 +163,4 @@ class GrandExchangeItemPanel extends JPanel c.setBackground(color); } } - - private static void geLink(String name, int itemID) - { - final String url = "http://services.runescape.com/m=itemdb_oldschool/" - + name.replaceAll(" ", "_") - + "/viewitem?obj=" - + itemID; - - LinkBrowser.browse(url); - } -} \ No newline at end of file +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java index f2a35d47d8..b4495ad90a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java @@ -39,7 +39,10 @@ import java.awt.image.BufferedImage; import javax.annotation.Nullable; import javax.swing.ImageIcon; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import net.runelite.api.GrandExchangeOffer; import net.runelite.api.GrandExchangeOfferState; @@ -98,21 +101,21 @@ public class GrandExchangeOfferSlot extends JPanel @Override public void mousePressed(MouseEvent mouseEvent) { - super.mousePressed(mouseEvent); - switchPanel(); + if (SwingUtilities.isLeftMouseButton(mouseEvent)) + { + switchPanel(); + } } @Override public void mouseEntered(MouseEvent mouseEvent) { - super.mouseEntered(mouseEvent); container.setBackground(ColorScheme.DARKER_GRAY_HOVER_COLOR); } @Override public void mouseExited(MouseEvent mouseEvent) { - super.mouseExited(mouseEvent); container.setBackground(ColorScheme.DARKER_GRAY_COLOR); } }; @@ -227,6 +230,13 @@ public class GrandExchangeOfferSlot extends JPanel progressBar.setMaximumValue(newOffer.getTotalQuantity()); progressBar.setValue(newOffer.getQuantitySold()); + final JPopupMenu popupMenu = new JPopupMenu(); + popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5)); + + final JMenuItem openGeLink = new JMenuItem("Open Grand Exchange website"); + openGeLink.addActionListener(e -> GrandExchangePlugin.openGeLink(offerItem.getName(), offerItem.getId())); + popupMenu.add(openGeLink); + /* Couldn't set the tooltip for the container panel as the children override it, so I'm setting * the tooltips on the children instead. */ for (Component c : container.getComponents()) @@ -235,6 +245,7 @@ public class GrandExchangeOfferSlot extends JPanel { JPanel panel = (JPanel) c; panel.setToolTipText(htmlTooltip(((int) progressBar.getPercentage()) + "%")); + panel.setComponentPopupMenu(popupMenu); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java index 8c3c04aea2..be52533acc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java @@ -96,6 +96,7 @@ import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.NavigationButton; import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ImageUtil; +import net.runelite.client.util.LinkBrowser; import net.runelite.client.util.OSType; import net.runelite.client.util.QuantityFormatter; import net.runelite.client.util.Text; @@ -932,4 +933,13 @@ public class GrandExchangePlugin extends Plugin } }); } + + static void openGeLink(String name, int itemId) + { + final String url = "https://services.runescape.com/m=itemdb_oldschool/" + + name.replaceAll(" ", "+") + + "/viewitem?obj=" + + itemId; + LinkBrowser.browse(url); + } }