Merge pull request #1403 from deathbeam/universal-warning

Universal warning message support in config
This commit is contained in:
Adam
2018-04-15 19:16:53 -04:00
committed by GitHub
3 changed files with 23 additions and 32 deletions

View File

@@ -43,9 +43,5 @@ public @interface ConfigItem
boolean hidden() default false;
String confirmationWarining() default "";
boolean warnOnEnable() default false;
boolean warnOnDisable() default false;
String warning() default "";
}

View File

@@ -58,9 +58,7 @@ public interface RuneLiteConfig extends Config
keyName = "uiEnableCustomChrome",
name = "Enable custom window chrome",
description = "Use Runelite's custom window title and borders.",
confirmationWarining = "Please restart your client after changing this setting",
warnOnEnable = true,
warnOnDisable = true
warning = "Please restart your client after changing this setting"
)
default boolean enableCustomChrome()
{

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.config;
import com.google.common.base.Strings;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
@@ -53,9 +54,6 @@ import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import static javax.swing.JOptionPane.WARNING_MESSAGE;
import static javax.swing.JOptionPane.YES_NO_OPTION;
import static javax.swing.JOptionPane.YES_OPTION;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
@@ -313,27 +311,26 @@ public class ConfigPanel extends PluginPanel
scrollbar.getVerticalScrollBar().setValue(scrollBarPosition);
}
private void changeConfiguration(JComponent component, ConfigDescriptor cd, ConfigItemDescriptor cid)
private void changeConfiguration(Config config, JComponent component, ConfigDescriptor cd, ConfigItemDescriptor cid)
{
ConfigItem configItem = cid.getItem();
if (!Strings.isNullOrEmpty(configItem.warning()))
{
final int result = JOptionPane.showOptionDialog(component, configItem.warning(),
"Are you sure?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
null, new String[]{"Yes", "No"}, "No");
if (result != JOptionPane.YES_OPTION)
{
openGroupConfigPanel(config, cd, configManager);
return;
}
}
if (component instanceof JCheckBox)
{
JCheckBox checkbox = (JCheckBox) component;
boolean originalState = !checkbox.isSelected();
boolean config = originalState ? configItem.warnOnDisable() : configItem.warnOnEnable();
if (!configItem.confirmationWarining().isEmpty() && config)
{
int value = JOptionPane.showOptionDialog(component, configItem.confirmationWarining(),
"Are you sure?", YES_NO_OPTION, WARNING_MESSAGE,
null, new String[]{"Yes", "No"}, "No");
if (value != YES_OPTION)
{
checkbox.setSelected(originalState);
return;
}
}
configManager.setConfiguration(cd.getGroup().keyName(), cid.getItem().keyName(), "" + checkbox.isSelected());
}
@@ -389,7 +386,7 @@ public class ConfigPanel extends PluginPanel
{
JCheckBox checkbox = new JCheckBox();
checkbox.setSelected(Boolean.parseBoolean(configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName())));
checkbox.addActionListener(ae -> changeConfiguration(checkbox, cd, cid));
checkbox.addActionListener(ae -> changeConfiguration(config, checkbox, cd, cid));
item.add(checkbox, BorderLayout.EAST);
}
@@ -403,7 +400,7 @@ public class ConfigPanel extends PluginPanel
Component editor = spinner.getEditor();
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
spinner.addChangeListener(ce -> changeConfiguration(spinner, cd, cid));
spinner.addChangeListener(ce -> changeConfiguration(config, spinner, cd, cid));
item.add(spinner, BorderLayout.EAST);
}
@@ -418,14 +415,14 @@ public class ConfigPanel extends PluginPanel
@Override
public void focusLost(FocusEvent e)
{
changeConfiguration(textField, cd, cid);
changeConfiguration(config, textField, cd, cid);
textField.setToolTipText(textField.getText());
}
});
textField.addActionListener(e ->
{
changeConfiguration(textField, cd, cid);
changeConfiguration(config, textField, cd, cid);
textField.setToolTipText(textField.getText());
});
@@ -451,7 +448,7 @@ public class ConfigPanel extends PluginPanel
@Override
public void windowClosing(WindowEvent e)
{
changeConfiguration(jColorChooser, cd, cid);
changeConfiguration(config, jColorChooser, cd, cid);
}
});
parent.add(jColorChooser);
@@ -517,7 +514,7 @@ public class ConfigPanel extends PluginPanel
{
if (e.getStateChange() == ItemEvent.SELECTED)
{
changeConfiguration(box, cd, cid);
changeConfiguration(config, box, cd, cid);
box.setToolTipText(box.getSelectedItem().toString());
}
});