Add support for color pickers in config
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
package net.runelite.client.config;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import java.awt.Color;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
@@ -311,9 +313,9 @@ public class ConfigManager
|
||||
List<ConfigItemDescriptor> items = Arrays.stream(inter.getMethods())
|
||||
.filter(m -> m.getParameterCount() == 0)
|
||||
.map(m -> new ConfigItemDescriptor(
|
||||
m.getDeclaredAnnotation(ConfigItem.class),
|
||||
m.getReturnType()
|
||||
))
|
||||
m.getDeclaredAnnotation(ConfigItem.class),
|
||||
m.getReturnType()
|
||||
))
|
||||
.collect(Collectors.toList());
|
||||
return new ConfigDescriptor(group, items);
|
||||
}
|
||||
@@ -355,7 +357,9 @@ public class ConfigManager
|
||||
}
|
||||
|
||||
logger.debug("Setting default configuration value for {}.{} to {}", group.keyName(), item.keyName(), defaultValue);
|
||||
setConfiguration(group.keyName(), item.keyName(), defaultValue.toString());
|
||||
|
||||
String valueString = objectToString(defaultValue);
|
||||
setConfiguration(group.keyName(), item.keyName(), valueString);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,6 +373,20 @@ public class ConfigManager
|
||||
{
|
||||
return Integer.parseInt(str);
|
||||
}
|
||||
if (type == Color.class)
|
||||
{
|
||||
return Color.decode(str);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
static String objectToString(Object object)
|
||||
{
|
||||
if (object instanceof Color)
|
||||
{
|
||||
return String.valueOf(((Color) object).getRGB());
|
||||
}
|
||||
|
||||
return object.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,20 +25,27 @@
|
||||
package net.runelite.client.plugins.config;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JColorChooser;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
@@ -48,6 +55,8 @@ import javax.swing.SpinnerModel;
|
||||
import javax.swing.SpinnerNumberModel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import net.runelite.client.RuneLite;
|
||||
import net.runelite.client.config.ConfigDescriptor;
|
||||
import net.runelite.client.config.ConfigItemDescriptor;
|
||||
@@ -141,6 +150,12 @@ public class ConfigPanel extends PluginPanel
|
||||
JTextField textField = (JTextField) component;
|
||||
configManager.setConfiguration(cd.getGroup().keyName(), cid.getItem().keyName(), textField.getText());
|
||||
}
|
||||
|
||||
if (component instanceof JColorChooser)
|
||||
{
|
||||
JColorChooser jColorChooser = (JColorChooser) component;
|
||||
configManager.setConfiguration(cd.getGroup().keyName(), cid.getItem().keyName(), String.valueOf(jColorChooser.getColor().getRGB()));
|
||||
}
|
||||
}
|
||||
|
||||
private void openGroupConfigPanel(ConfigDescriptor cd, ConfigManager configManager)
|
||||
@@ -205,6 +220,43 @@ public class ConfigPanel extends PluginPanel
|
||||
item.add(textField, BorderLayout.EAST);
|
||||
}
|
||||
|
||||
if (cid.getType() == Color.class)
|
||||
{
|
||||
JButton colorPicker = new JButton("Pick a color");
|
||||
colorPicker.setFocusable(false);
|
||||
colorPicker.setBackground(Color.decode(configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName())));
|
||||
colorPicker.addMouseListener(new MouseAdapter()
|
||||
{
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e)
|
||||
{
|
||||
final JFrame parent = new JFrame();
|
||||
parent.setLocation(RuneLite.getRunelite().getGui().getX(), RuneLite.getRunelite().getGui().getY());
|
||||
JColorChooser jColorChooser = new JColorChooser(Color.decode(configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName())));
|
||||
jColorChooser.getSelectionModel().addChangeListener(new ChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e)
|
||||
{
|
||||
colorPicker.setBackground(jColorChooser.getColor());
|
||||
}
|
||||
});
|
||||
parent.addWindowListener(new WindowAdapter()
|
||||
{
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e)
|
||||
{
|
||||
changeConfiguration(jColorChooser, cd, cid);
|
||||
}
|
||||
});
|
||||
parent.add(jColorChooser);
|
||||
parent.pack();
|
||||
parent.setVisible(true);
|
||||
}
|
||||
});
|
||||
item.add(colorPicker, BorderLayout.EAST);
|
||||
}
|
||||
|
||||
itemPanel.add(item);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user