Add support for popups to navigation button
- Add support for popup map to navigation button - Re-add popup to ScreenshotPlugin Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -36,6 +36,8 @@ import javax.swing.GroupLayout;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.LayoutStyle;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.HyperlinkEvent;
|
||||
@@ -234,6 +236,20 @@ public class InfoPanel extends PluginPanel
|
||||
button.addActionListener(e -> event.getButton().getOnClick().run());
|
||||
}
|
||||
|
||||
if (event.getButton().getPopup() != null)
|
||||
{
|
||||
final JPopupMenu popupMenu = new JPopupMenu();
|
||||
|
||||
event.getButton().getPopup().forEach((name, callback) ->
|
||||
{
|
||||
final JMenuItem menuItem = new JMenuItem(name);
|
||||
menuItem.addActionListener((e) -> callback.run());
|
||||
popupMenu.add(menuItem);
|
||||
});
|
||||
|
||||
button.setComponentPopupMenu(popupMenu);
|
||||
}
|
||||
|
||||
event.getButton().setOnSelect(() -> button.setSelected(event.getButton().isSelected()));
|
||||
|
||||
titleBar.addComponent(event.getButton(), button);
|
||||
|
||||
@@ -25,9 +25,11 @@
|
||||
package net.runelite.client.plugins.screenshot;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import com.google.inject.Provides;
|
||||
import java.awt.Color;
|
||||
import java.awt.Desktop;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Toolkit;
|
||||
@@ -153,6 +155,21 @@ public class ScreenshotPlugin extends Plugin
|
||||
.onClick(() -> takeScreenshot(
|
||||
TIME_FORMAT.format(new Date()),
|
||||
client.getLocalPlayer() != null))
|
||||
.popup(ImmutableMap
|
||||
.<String, Runnable>builder()
|
||||
.put("Open screenshot folder...", () ->
|
||||
{
|
||||
try
|
||||
{
|
||||
Desktop.getDesktop().open(RuneLite.SCREENSHOT_DIR);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
log.warn("Error opening screenshot dir", ex);
|
||||
|
||||
}
|
||||
})
|
||||
.build())
|
||||
.build();
|
||||
|
||||
titleToolbar.addNavigation(titleBarButton);
|
||||
|
||||
@@ -49,7 +49,9 @@ import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JRootPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
import lombok.Getter;
|
||||
@@ -274,6 +276,20 @@ public class ClientUI
|
||||
button.addActionListener(e -> event.getButton().getOnClick().run());
|
||||
}
|
||||
|
||||
if (event.getButton().getPopup() != null)
|
||||
{
|
||||
final JPopupMenu popupMenu = new JPopupMenu();
|
||||
|
||||
event.getButton().getPopup().forEach((name, callback) ->
|
||||
{
|
||||
final JMenuItem menuItem = new JMenuItem(name);
|
||||
menuItem.addActionListener((e) -> callback.run());
|
||||
popupMenu.add(menuItem);
|
||||
});
|
||||
|
||||
button.setComponentPopupMenu(popupMenu);
|
||||
}
|
||||
|
||||
event.getButton().setOnSelect(() -> button.setSelected(event.getButton().isSelected()));
|
||||
titleToolbar.addComponent(event.getButton(), button);
|
||||
});
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
package net.runelite.client.ui;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -73,4 +74,9 @@ public class NavigationButton
|
||||
* Supplier for plugin panel, used when expanding and contracting sidebar.
|
||||
*/
|
||||
private Supplier<PluginPanel> panel;
|
||||
|
||||
/**
|
||||
* Map of key-value pairs for setting the popup menu
|
||||
*/
|
||||
private Map<String, Runnable> popup;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user