project: Add back missing config features
This commit is contained in:
@@ -629,7 +629,7 @@ public class ConfigManager
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
final List<ConfigTitleDescriptor> titles = getAllDeclaredInterfaceFields(inter).stream()
|
final List<ConfigTitleDescriptor> titles = getAllDeclaredInterfaceFields(inter).stream()
|
||||||
.filter(m -> m.isAnnotationPresent(ConfigTitle.class) && m.getClass().equals(String.class))
|
.filter(m -> m.isAnnotationPresent(ConfigTitle.class) && m.getType() == String.class)
|
||||||
.map(m ->
|
.map(m ->
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -936,10 +936,6 @@ public class ConfigManager
|
|||||||
{
|
{
|
||||||
return Base64.getUrlEncoder().encodeToString((byte[]) object);
|
return Base64.getUrlEncoder().encodeToString((byte[]) object);
|
||||||
}
|
}
|
||||||
if (object instanceof Set)
|
|
||||||
{
|
|
||||||
return gson.toJson(object, Set.class);
|
|
||||||
}
|
|
||||||
if (object instanceof EnumSet)
|
if (object instanceof EnumSet)
|
||||||
{
|
{
|
||||||
if (((EnumSet) object).size() == 0)
|
if (((EnumSet) object).size() == 0)
|
||||||
@@ -949,6 +945,10 @@ public class ConfigManager
|
|||||||
|
|
||||||
return ((EnumSet) object).toArray()[0].getClass().getCanonicalName() + "{" + object.toString() + "}";
|
return ((EnumSet) object).toArray()[0].getClass().getCanonicalName() + "{" + object.toString() + "}";
|
||||||
}
|
}
|
||||||
|
if (object instanceof Set)
|
||||||
|
{
|
||||||
|
return gson.toJson(object, Set.class);
|
||||||
|
}
|
||||||
return object == null ? null : object.toString();
|
return object == null ? null : object.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import com.google.common.base.Strings;
|
|||||||
import com.google.common.collect.ComparisonChain;
|
import com.google.common.collect.ComparisonChain;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.google.common.primitives.Ints;
|
import com.google.common.primitives.Ints;
|
||||||
|
|
||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
@@ -47,7 +46,10 @@ import java.awt.event.ItemEvent;
|
|||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.ParameterizedType;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -55,6 +57,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.BoxLayout;
|
import javax.swing.BoxLayout;
|
||||||
@@ -62,6 +65,7 @@ import javax.swing.ImageIcon;
|
|||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JFormattedTextField;
|
import javax.swing.JFormattedTextField;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JList;
|
import javax.swing.JList;
|
||||||
@@ -71,18 +75,22 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.JPasswordField;
|
import javax.swing.JPasswordField;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSeparator;
|
import javax.swing.JSeparator;
|
||||||
|
import javax.swing.JSlider;
|
||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.JTextField;
|
||||||
import javax.swing.ListCellRenderer;
|
import javax.swing.ListCellRenderer;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.ScrollPaneConstants;
|
import javax.swing.ScrollPaneConstants;
|
||||||
import javax.swing.SpinnerModel;
|
import javax.swing.SpinnerModel;
|
||||||
import javax.swing.SpinnerNumberModel;
|
import javax.swing.SpinnerNumberModel;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.border.CompoundBorder;
|
import javax.swing.border.CompoundBorder;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
import javax.swing.border.MatteBorder;
|
import javax.swing.border.MatteBorder;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
|
import javax.swing.plaf.basic.BasicSpinnerUI;
|
||||||
import javax.swing.text.JTextComponent;
|
import javax.swing.text.JTextComponent;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.client.config.ConfigDescriptor;
|
import net.runelite.client.config.ConfigDescriptor;
|
||||||
@@ -117,6 +125,7 @@ import net.runelite.client.ui.components.ToggleButton;
|
|||||||
import net.runelite.client.ui.components.colorpicker.ColorPickerManager;
|
import net.runelite.client.ui.components.colorpicker.ColorPickerManager;
|
||||||
import net.runelite.client.ui.components.colorpicker.RuneliteColorPicker;
|
import net.runelite.client.ui.components.colorpicker.RuneliteColorPicker;
|
||||||
import net.runelite.client.util.ColorUtil;
|
import net.runelite.client.util.ColorUtil;
|
||||||
|
import net.runelite.client.util.DeferredDocumentChangedListener;
|
||||||
import net.runelite.client.util.ImageUtil;
|
import net.runelite.client.util.ImageUtil;
|
||||||
import net.runelite.client.util.LinkBrowser;
|
import net.runelite.client.util.LinkBrowser;
|
||||||
import net.runelite.client.util.SwingUtil;
|
import net.runelite.client.util.SwingUtil;
|
||||||
@@ -474,7 +483,22 @@ class ConfigPanel extends PluginPanel
|
|||||||
}
|
}
|
||||||
else if (cid.getType() == String.class)
|
else if (cid.getType() == String.class)
|
||||||
{
|
{
|
||||||
item.add(createTextField(cd, cid), BorderLayout.SOUTH);
|
JTextComponent textField = createTextField(cd, cid);
|
||||||
|
|
||||||
|
if (cid.getItem().parse())
|
||||||
|
{
|
||||||
|
JLabel parsingLabel = createParseLabel(cid, textField);
|
||||||
|
|
||||||
|
item.add(configEntryName, BorderLayout.NORTH);
|
||||||
|
item.add(textField, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
parseLabel(cid.getItem(), parsingLabel, textField.getText());
|
||||||
|
item.add(parsingLabel, BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.add(textField, BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cid.getType() == Color.class)
|
else if (cid.getType() == Color.class)
|
||||||
{
|
{
|
||||||
@@ -497,25 +521,33 @@ class ConfigPanel extends PluginPanel
|
|||||||
ParameterizedType parameterizedType = (ParameterizedType) cid.getType();
|
ParameterizedType parameterizedType = (ParameterizedType) cid.getType();
|
||||||
if (parameterizedType.getRawType() == Set.class)
|
if (parameterizedType.getRawType() == Set.class)
|
||||||
{
|
{
|
||||||
item.add(createList(cd, cid), BorderLayout.EAST);
|
item.add(createList(cd, cid), BorderLayout.SOUTH);
|
||||||
}
|
}
|
||||||
}
|
else if (parameterizedType.getRawType() == Consumer.class)
|
||||||
else if (cid.getType() instanceof EnumSet)
|
|
||||||
{
|
{
|
||||||
ParameterizedType parameterizedType = (ParameterizedType) cid.getType();
|
item.remove(configEntryName);
|
||||||
if (parameterizedType.getRawType() == EnumSet.class)
|
item.add(createConsumer(cd, cid), BorderLayout.CENTER);
|
||||||
|
}
|
||||||
|
else if (parameterizedType.getRawType() == EnumSet.class)
|
||||||
{
|
{
|
||||||
item.add(createList(cd, cid), BorderLayout.EAST);
|
item.add(createEnumSetLayout(cd, cid), BorderLayout.SOUTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPanel section = sectionWidgets.get(cid.getItem().section());
|
JPanel section = sectionWidgets.get(cid.getItem().section());
|
||||||
if (section == null)
|
JPanel title = titleWidgets.get(cid.getItem().title());
|
||||||
|
|
||||||
|
if (section != null)
|
||||||
{
|
{
|
||||||
topLevelPanels.put(cid, item);
|
section.add(item);
|
||||||
|
}
|
||||||
|
else if (title != null)
|
||||||
|
{
|
||||||
|
title.add(item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
section.add(item);
|
topLevelPanels.put(cid, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,6 +583,18 @@ class ConfigPanel extends PluginPanel
|
|||||||
revalidate();
|
revalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JButton createConsumer(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
|
{
|
||||||
|
JButton button = new JButton(cid.getItem().name());
|
||||||
|
button.addActionListener((e) ->
|
||||||
|
{
|
||||||
|
log.debug("Running consumer: {}.{}", cd.getGroup().value(), cid.getItem().keyName());
|
||||||
|
configManager.getConsumer(cd.getGroup().value(), cid.getItem().keyName()).accept(pluginConfig.getPlugin());
|
||||||
|
});
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
private JCheckBox createCheckbox(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private JCheckBox createCheckbox(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
JCheckBox checkbox = new ToggleButton();
|
JCheckBox checkbox = new ToggleButton();
|
||||||
@@ -560,10 +604,11 @@ class ConfigPanel extends PluginPanel
|
|||||||
return checkbox;
|
return checkbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JSpinner createIntSpinner(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private JComponent createIntSpinner(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
int value = Integer.parseInt(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
int value = Integer.parseInt(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
||||||
|
|
||||||
|
Units units = cid.getUnits();
|
||||||
Range range = cid.getRange();
|
Range range = cid.getRange();
|
||||||
int min = 0, max = Integer.MAX_VALUE;
|
int min = 0, max = Integer.MAX_VALUE;
|
||||||
if (range != null)
|
if (range != null)
|
||||||
@@ -575,6 +620,108 @@ class ConfigPanel extends PluginPanel
|
|||||||
// Config may previously have been out of range
|
// Config may previously have been out of range
|
||||||
value = Ints.constrainToRange(value, min, max);
|
value = Ints.constrainToRange(value, min, max);
|
||||||
|
|
||||||
|
if (max < Integer.MAX_VALUE)
|
||||||
|
{
|
||||||
|
JLabel sliderValueLabel = new JLabel();
|
||||||
|
JSlider slider = new JSlider(min, max, value);
|
||||||
|
slider.setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||||
|
if (units != null)
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(slider.getValue() + units.value());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(String.valueOf(slider.getValue()));
|
||||||
|
}
|
||||||
|
slider.setPreferredSize(new Dimension(80, 25));
|
||||||
|
slider.addChangeListener((l) ->
|
||||||
|
{
|
||||||
|
if (units != null)
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(slider.getValue() + units.value());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(String.valueOf(slider.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!slider.getValueIsAdjusting())
|
||||||
|
{
|
||||||
|
changeConfiguration(slider, cd, cid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
SpinnerModel model = new SpinnerNumberModel(value, min, max, 1);
|
||||||
|
JSpinner spinner = new JSpinner(model);
|
||||||
|
Component editor = spinner.getEditor();
|
||||||
|
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
|
||||||
|
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
||||||
|
spinner.setUI(new BasicSpinnerUI()
|
||||||
|
{
|
||||||
|
protected Component createNextButton()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Component createPreviousButton()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
JPanel subPanel = new JPanel();
|
||||||
|
subPanel.setPreferredSize(new Dimension(110, 25));
|
||||||
|
subPanel.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
spinner.addChangeListener((ce) ->
|
||||||
|
{
|
||||||
|
changeConfiguration(spinner, cd, cid);
|
||||||
|
|
||||||
|
if (units != null)
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(spinner.getValue() + units.value());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliderValueLabel.setText(String.valueOf(spinner.getValue()));
|
||||||
|
}
|
||||||
|
slider.setValue((Integer) spinner.getValue());
|
||||||
|
|
||||||
|
subPanel.add(sliderValueLabel, BorderLayout.WEST);
|
||||||
|
subPanel.add(slider, BorderLayout.EAST);
|
||||||
|
subPanel.remove(spinner);
|
||||||
|
|
||||||
|
validate();
|
||||||
|
repaint();
|
||||||
|
});
|
||||||
|
|
||||||
|
sliderValueLabel.addMouseListener(new MouseAdapter()
|
||||||
|
{
|
||||||
|
public void mouseClicked(MouseEvent e)
|
||||||
|
{
|
||||||
|
spinner.setValue(slider.getValue());
|
||||||
|
|
||||||
|
subPanel.remove(sliderValueLabel);
|
||||||
|
subPanel.remove(slider);
|
||||||
|
subPanel.add(spinner, BorderLayout.EAST);
|
||||||
|
|
||||||
|
validate();
|
||||||
|
repaint();
|
||||||
|
|
||||||
|
final JTextField tf = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
|
||||||
|
tf.requestFocusInWindow();
|
||||||
|
SwingUtilities.invokeLater(tf::selectAll);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
subPanel.add(sliderValueLabel, BorderLayout.WEST);
|
||||||
|
subPanel.add(slider, BorderLayout.EAST);
|
||||||
|
|
||||||
|
return subPanel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
SpinnerModel model = new SpinnerNumberModel(value, min, max, 1);
|
SpinnerModel model = new SpinnerNumberModel(value, min, max, 1);
|
||||||
JSpinner spinner = new JSpinner(model);
|
JSpinner spinner = new JSpinner(model);
|
||||||
Component editor = spinner.getEditor();
|
Component editor = spinner.getEditor();
|
||||||
@@ -582,7 +729,6 @@ class ConfigPanel extends PluginPanel
|
|||||||
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
||||||
spinner.addChangeListener(ce -> changeConfiguration(spinner, cd, cid));
|
spinner.addChangeListener(ce -> changeConfiguration(spinner, cd, cid));
|
||||||
|
|
||||||
Units units = cid.getUnits();
|
|
||||||
if (units != null)
|
if (units != null)
|
||||||
{
|
{
|
||||||
spinnerTextField.setFormatterFactory(new UnitFormatterFactory(units));
|
spinnerTextField.setFormatterFactory(new UnitFormatterFactory(units));
|
||||||
@@ -590,6 +736,7 @@ class ConfigPanel extends PluginPanel
|
|||||||
|
|
||||||
return spinner;
|
return spinner;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private JSpinner createDoubleSpinner(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private JSpinner createDoubleSpinner(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
@@ -601,6 +748,7 @@ class ConfigPanel extends PluginPanel
|
|||||||
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
|
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
|
||||||
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
||||||
spinner.addChangeListener(ce -> changeConfiguration(spinner, cd, cid));
|
spinner.addChangeListener(ce -> changeConfiguration(spinner, cd, cid));
|
||||||
|
|
||||||
return spinner;
|
return spinner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,6 +783,25 @@ class ConfigPanel extends PluginPanel
|
|||||||
return textField;
|
return textField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JLabel createParseLabel(ConfigItemDescriptor cid, JTextComponent textField)
|
||||||
|
{
|
||||||
|
JLabel parsingLabel = new JLabel();
|
||||||
|
parsingLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
|
parsingLabel.setPreferredSize(new Dimension(PANEL_WIDTH, 15));
|
||||||
|
|
||||||
|
DeferredDocumentChangedListener listener = new DeferredDocumentChangedListener();
|
||||||
|
listener.addChangeListener(e ->
|
||||||
|
{
|
||||||
|
if (cid.getItem().parse())
|
||||||
|
{
|
||||||
|
parseLabel(cid.getItem(), parsingLabel, textField.getText());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
textField.getDocument().addDocumentListener(listener);
|
||||||
|
|
||||||
|
return parsingLabel;
|
||||||
|
}
|
||||||
|
|
||||||
private ColorJButton createColorPicker(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private ColorJButton createColorPicker(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
Color existing = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName(), Color.class);
|
Color existing = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName(), Color.class);
|
||||||
@@ -796,6 +963,92 @@ class ConfigPanel extends PluginPanel
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JPanel createEnumSetLayout(ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
|
{
|
||||||
|
Class enumType = cid.getItem().enumClass();
|
||||||
|
|
||||||
|
EnumSet enumSet = configManager.getConfiguration(cd.getGroup().value(),
|
||||||
|
cid.getItem().keyName(), EnumSet.class);
|
||||||
|
if (enumSet == null || enumSet.contains(null))
|
||||||
|
{
|
||||||
|
enumSet = EnumSet.noneOf(enumType);
|
||||||
|
}
|
||||||
|
|
||||||
|
JPanel enumsetLayout = new JPanel(new GridLayout(0, 2));
|
||||||
|
List<JCheckBox> jcheckboxes = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Object obj : enumType.getEnumConstants())
|
||||||
|
{
|
||||||
|
String option = Text.titleCase((Enum<?>) obj);
|
||||||
|
|
||||||
|
JCheckBox checkbox = new ToggleButton(option);
|
||||||
|
checkbox.setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||||
|
checkbox.setSelected(enumSet.toString().contains(String.valueOf(obj)));
|
||||||
|
jcheckboxes.add(checkbox);
|
||||||
|
|
||||||
|
enumsetLayout.add(checkbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
jcheckboxes.forEach(checkbox -> checkbox.addActionListener(ae -> changeConfiguration(jcheckboxes, cd, cid)));
|
||||||
|
|
||||||
|
return enumsetLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Boolean parse(ConfigItem item, String value)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Method parse = item.clazz().getMethod(item.method(), String.class);
|
||||||
|
|
||||||
|
return (boolean) parse.invoke(null, value);
|
||||||
|
}
|
||||||
|
catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex)
|
||||||
|
{
|
||||||
|
log.error("Parsing failed: {}", ex.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void parseLabel(ConfigItem item, JLabel label, String value)
|
||||||
|
{
|
||||||
|
Boolean result = parse(item, value);
|
||||||
|
|
||||||
|
if (result == null)
|
||||||
|
{
|
||||||
|
label.setForeground(Color.RED);
|
||||||
|
label.setText("Parsing failed");
|
||||||
|
}
|
||||||
|
else if (result)
|
||||||
|
{
|
||||||
|
label.setForeground(Color.GREEN);
|
||||||
|
label.setText("Valid input");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label.setForeground(Color.RED);
|
||||||
|
label.setText("Invalid input");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void changeConfiguration(List<JCheckBox> components, ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
|
{
|
||||||
|
EnumSet enumSet = EnumSet.noneOf(cid.getItem().enumClass());
|
||||||
|
|
||||||
|
//noinspection unchecked
|
||||||
|
components.forEach(value ->
|
||||||
|
{
|
||||||
|
if (value.isSelected())
|
||||||
|
{
|
||||||
|
enumSet.add(Enum.valueOf(cid.getItem().enumClass(), String.valueOf(value.getText()).toUpperCase().replace(" ", "_")));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), enumSet);
|
||||||
|
|
||||||
|
rebuild();
|
||||||
|
}
|
||||||
|
|
||||||
private void changeConfiguration(Component component, ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private void changeConfiguration(Component component, ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
final ConfigItem configItem = cid.getItem();
|
final ConfigItem configItem = cid.getItem();
|
||||||
|
|||||||
Reference in New Issue
Block a user