config: add buttons (#1464)

This commit is contained in:
Owain van Brakel
2019-08-27 19:35:37 +02:00
committed by Ganom
parent ecf1c284a0
commit 92a4ab3da0
2 changed files with 32 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
package net.runelite.client.config;
public class Button
{
}

View File

@@ -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<ConfigPanelItem> orderedList = mainParent.getItemsAsList();
List<JButton> 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> actionListener = (Class<ActionListener>) 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");