From 92a4ab3da0a97e2bcfea7fa6637c0b33caa33fda Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Tue, 27 Aug 2019 19:35:37 +0200 Subject: [PATCH] config: add buttons (#1464) --- .../net/runelite/client/config/Button.java | 5 ++++ .../client/plugins/config/ConfigPanel.java | 28 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/config/Button.java diff --git a/runelite-client/src/main/java/net/runelite/client/config/Button.java b/runelite-client/src/main/java/net/runelite/client/config/Button.java new file mode 100644 index 0000000000..591332ce05 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/config/Button.java @@ -0,0 +1,5 @@ +package net.runelite.client.config; + +public class Button +{ +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java index 0836facfc6..f7b03a7138 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java @@ -33,6 +33,7 @@ import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Insets; import java.awt.Rectangle; +import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; @@ -79,6 +80,8 @@ import javax.swing.event.DocumentListener; import javax.swing.plaf.basic.BasicSpinnerUI; import javax.swing.text.JTextComponent; import lombok.extern.slf4j.Slf4j; +import net.runelite.api.util.Text; +import net.runelite.client.config.Button; import net.runelite.client.config.ChatColorConfig; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigDescriptor; @@ -110,7 +113,6 @@ import net.runelite.client.ui.components.colorpicker.RuneliteColorPicker; import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ImageUtil; import net.runelite.client.util.MiscUtils; -import net.runelite.api.util.Text; import org.apache.commons.lang3.StringUtils; @Slf4j @@ -623,6 +625,7 @@ public class ConfigPanel extends PluginPanel } while (allItems.size() > 0 && maxDepth > 0); List orderedList = mainParent.getItemsAsList(); + List buttons = new ArrayList<>(); for (ConfigPanelItem cpi : orderedList) { @@ -700,6 +703,27 @@ public class ConfigPanel extends PluginPanel } } + if (cid.getType() == Button.class) + { + try + { + ConfigItem item = cid.getItem(); + + JButton button = new JButton(item.name()); + + Class actionListener = (Class) item.clazz(); + + button.addActionListener(actionListener.newInstance()); + buttons.add(button); + } + catch (IllegalAccessException | InstantiationException ex) + { + log.error("Adding action listener failed: {}", ex.getMessage()); + } + + continue; + } + JPanel item = new JPanel(); item.setLayout(new BorderLayout()); item.setMinimumSize(new Dimension(PANEL_WIDTH, 0)); @@ -1042,6 +1066,8 @@ public class ConfigPanel extends PluginPanel } mainPanel.add(item); } + + buttons.forEach(mainPanel::add); } JButton resetButton = new JButton("Reset");