From c989b9f0252bd5aeda98f32dbdecdf0140260030 Mon Sep 17 00:00:00 2001 From: Evenprime Date: Tue, 3 May 2011 18:05:14 +0200 Subject: [PATCH] Finished automated GUI generation out of a Options Tree --- .../bukkit/nocheat/wizard/BooleanOption.java | 41 -------- .../bukkit/nocheat/wizard/ChildOption.java | 24 ----- .../bukkit/nocheat/wizard/EmptyOption.java | 16 --- .../bukkit/nocheat/wizard/EmptyVerifier.java | 24 ----- .../bukkit/nocheat/wizard/IntegerOption.java | 16 --- .../nocheat/wizard/IntegerVerifier.java | 34 ------- .../bukkit/nocheat/wizard/LogLevelOption.java | 51 ---------- .../bukkit/nocheat/wizard/Option.java | 25 ----- .../bukkit/nocheat/wizard/StringOption.java | 14 --- .../nocheat/wizard/TextFieldOption.java | 32 ------ .../bukkit/nocheat/wizard/Wizard.java | 81 +++++++-------- .../wizard/gui/ChildOptionGuiFactory.java | 99 +++++++++++++++++++ .../nocheat/wizard/gui/ParentOptionGui.java | 97 ++++++++++++++++++ .../nocheat/wizard/options/BooleanOption.java | 31 ++++++ .../nocheat/wizard/options/ChildOption.java | 17 ++++ .../nocheat/wizard/options/IntegerOption.java | 29 ++++++ .../wizard/options/LogLevelOption.java | 63 ++++++++++++ .../wizard/options/LongStringOption.java | 13 +++ .../wizard/options/MediumStringOption.java | 13 +++ .../bukkit/nocheat/wizard/options/Option.java | 15 +++ .../wizard/{ => options}/ParentOption.java | 19 +--- .../wizard/options/ShortStringOption.java | 13 +++ .../wizard/options/TextFieldOption.java | 51 ++++++++++ 23 files changed, 486 insertions(+), 332 deletions(-) delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/BooleanOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/ChildOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyVerifier.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerVerifier.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/LogLevelOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/Option.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/StringOption.java delete mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/TextFieldOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ChildOptionGuiFactory.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ParentOptionGui.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/BooleanOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/ChildOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/IntegerOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/LogLevelOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/LongStringOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/MediumStringOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/Option.java rename src/cc/co/evenprime/bukkit/nocheat/wizard/{ => options}/ParentOption.java (50%) create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/ShortStringOption.java create mode 100644 src/cc/co/evenprime/bukkit/nocheat/wizard/options/TextFieldOption.java diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/BooleanOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/BooleanOption.java deleted file mode 100644 index 514f8807..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/BooleanOption.java +++ /dev/null @@ -1,41 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -import java.awt.BorderLayout; -import java.awt.Dimension; - -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -public class BooleanOption extends ChildOption { - - /** - * - */ - private static final long serialVersionUID = 2258827414736580449L; - - public BooleanOption(String name, boolean initialValue) { - - super(name, String.valueOf(initialValue)); - - this.setLayout(new BorderLayout()); - - JLabel l = new JLabel(this.getIdentifier()); - l.setPreferredSize(new Dimension(l.getPreferredSize().width+10, l.getPreferredSize().height)); - - this.add(l, BorderLayout.CENTER); - - JCheckBox checkBox = new JCheckBox(); - checkBox.setSelected(initialValue); - checkBox.addChangeListener(new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent arg0) { - setValue(String.valueOf(((JCheckBox)arg0.getSource()).isSelected())); - } - }); - - this.add(checkBox, BorderLayout.WEST); - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/ChildOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/ChildOption.java deleted file mode 100644 index 5b9c6d4d..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/ChildOption.java +++ /dev/null @@ -1,24 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -public abstract class ChildOption extends Option { - - /** - * - */ - private static final long serialVersionUID = -4648294833934457776L; - - private String value; - - public ChildOption(String identifier, String value) { - super(identifier); - this.value = value; - } - - public final void setValue(String value) { - this.value = value; - } - - public final String getValue() { - return value; - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyOption.java deleted file mode 100644 index 72488c3c..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyOption.java +++ /dev/null @@ -1,16 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -public class EmptyOption extends Option { - - public EmptyOption() { - super(""); - } - - /** - * - */ - private static final long serialVersionUID = 5058363675498808020L; - - - -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyVerifier.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyVerifier.java deleted file mode 100644 index 70f4b1b7..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/EmptyVerifier.java +++ /dev/null @@ -1,24 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -import javax.swing.InputVerifier; -import javax.swing.JComponent; -import javax.swing.JTextField; - -public class EmptyVerifier extends InputVerifier { - - @Override - public boolean verify(JComponent input) { - JTextField text = (JTextField)input; - ChildOption parent = (ChildOption) text.getParent(); - - try{ - parent.setValue(text.getText()); - return true; - } - catch(Exception e) { - text.setText(parent.getValue()); - return false; - } - } - -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerOption.java deleted file mode 100644 index ffc78d59..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerOption.java +++ /dev/null @@ -1,16 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - - -public class IntegerOption extends TextFieldOption { - - /** - * - */ - private static final long serialVersionUID = 2258827414736580449L; - - public IntegerOption(String name, int initialValue, int width) { - - super(name, String.valueOf(initialValue), width, new IntegerVerifier("Only integers are allowed in this field.")); - - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerVerifier.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerVerifier.java deleted file mode 100644 index 22ebafdf..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/IntegerVerifier.java +++ /dev/null @@ -1,34 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -import javax.swing.InputVerifier; -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.JTextField; - -public class IntegerVerifier extends InputVerifier { - - private String errorMessage; - - public IntegerVerifier(String errorMessage) { - this.errorMessage = errorMessage; - } - - @Override - public boolean verify(JComponent input) { - JTextField text = (JTextField)input; - ChildOption parent = (ChildOption) text.getParent(); - - try{ - Integer.parseInt(text.getText()); - parent.setValue(text.getText()); - return true; - } - catch(Exception e) { - JOptionPane.showMessageDialog(text, errorMessage); - - text.setText(parent.getValue()); - return false; - } - } - -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/LogLevelOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/LogLevelOption.java deleted file mode 100644 index 83ebde56..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/LogLevelOption.java +++ /dev/null @@ -1,51 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -import java.awt.BorderLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -import javax.swing.JComboBox; -import javax.swing.JLabel; - -public class LogLevelOption extends ChildOption { - - /** - * - */ - private static final long serialVersionUID = -1609308017422576285L; - - public LogLevelOption(String identifier, String initialValue) { - - super(identifier, initialValue); - - this.setLayout(new BorderLayout()); - - this.add(new JLabel(this.getIdentifier()), BorderLayout.CENTER); - - JComboBox box = new JComboBox(); - - String options[] = { "off", "low", "med", "high" }; - - boolean found = false; - - box.addItemListener(new ItemListener() { - - @Override - public void itemStateChanged(ItemEvent arg0) { - setValue(arg0.getItem().toString()); - } - }); - - for(String s : options) { - box.addItem(s); - if(s.equals(initialValue)) { box.setSelectedItem(s); found = true; } - } - - - if(!found) box.setSelectedItem("off"); - - this.add(box, BorderLayout.WEST); - - - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/Option.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/Option.java deleted file mode 100644 index 1c0245ee..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/Option.java +++ /dev/null @@ -1,25 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - - -import java.awt.Dimension; - -import javax.swing.JPanel; - -public abstract class Option extends JPanel { - - /** - * - */ - private static final long serialVersionUID = 6710455693749974103L; - - private final String identifier; - - public Option(String identifier) { - this.identifier = identifier; - this.setMinimumSize(new Dimension(this.getPreferredSize().height, this.getPreferredSize().width)); - } - - public String getIdentifier() { - return identifier; - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/StringOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/StringOption.java deleted file mode 100644 index b4dd2fdb..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/StringOption.java +++ /dev/null @@ -1,14 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -public class StringOption extends TextFieldOption { - - /** - * - */ - private static final long serialVersionUID = 2258827414736580449L; - - public StringOption(String name, String initialValue, int width) { - super(name, initialValue, width, new EmptyVerifier()); - - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/TextFieldOption.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/TextFieldOption.java deleted file mode 100644 index c6d78fdf..00000000 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/TextFieldOption.java +++ /dev/null @@ -1,32 +0,0 @@ -package cc.co.evenprime.bukkit.nocheat.wizard; - -import java.awt.BorderLayout; - -import javax.swing.InputVerifier; -import javax.swing.JLabel; -import javax.swing.JTextField; - -public abstract class TextFieldOption extends ChildOption { - - /** - * - */ - private static final long serialVersionUID = -8189248456599421250L; - - public TextFieldOption(String name, String initialValue, int width, final InputVerifier inputVerifier) { - - super(name, String.valueOf(initialValue)); - - this.setLayout(new BorderLayout()); - - this.add(new JLabel(this.getIdentifier()), BorderLayout.CENTER); - - JTextField textField = new JTextField(); - textField.setText(this.getValue()); - textField.setColumns(width); - textField.setInputVerifier(inputVerifier); - - this.add(textField, BorderLayout.WEST); - - } -} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/Wizard.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/Wizard.java index 3b60c1d5..bd74d106 100644 --- a/src/cc/co/evenprime/bukkit/nocheat/wizard/Wizard.java +++ b/src/cc/co/evenprime/bukkit/nocheat/wizard/Wizard.java @@ -1,16 +1,26 @@ package cc.co.evenprime.bukkit.nocheat.wizard; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; -import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; +import cc.co.evenprime.bukkit.nocheat.wizard.gui.ParentOptionGui; +import cc.co.evenprime.bukkit.nocheat.wizard.options.BooleanOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.ChildOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.IntegerOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.LogLevelOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.MediumStringOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.Option; +import cc.co.evenprime.bukkit.nocheat.wizard.options.ParentOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.LongStringOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.ShortStringOption; + public class Wizard extends JFrame { /** @@ -20,11 +30,6 @@ public class Wizard extends JFrame { private static final String pre = " "; - private static final int numberWidth = 4; - private static final int wordWidth = 10; - private static final int fileWidth = 20; - private static final int textWidth = 60; - public Wizard() { JScrollPane scrollable = new JScrollPane(); @@ -36,21 +41,19 @@ public class Wizard extends JFrame { JPanel inside = new JPanel(); scrollable.setViewportView(inside); - inside.setLayout(new FlowLayout()); - - + inside.setLayout(new BoxLayout(inside,BoxLayout.Y_AXIS)); + final ParentOption root = new ParentOption(""); - inside.add(root); ParentOption loggingNode = new ParentOption("logging"); root.add(loggingNode); - loggingNode.add(new StringOption("filename", "plugins/NoCheat/nocheat.log", fileWidth)); - loggingNode.add(new LogLevelOption("logtofile", "low")); - loggingNode.add(new LogLevelOption("logtoconsole", "high")); - loggingNode.add(new LogLevelOption("logtochat", "med")); - loggingNode.add(new LogLevelOption("logtoirc", "med")); - loggingNode.add(new StringOption("logtoirctag", "nocheat", wordWidth)); + loggingNode.add(new MediumStringOption("filename", "plugins/NoCheat/nocheat.log")); + loggingNode.add(new LogLevelOption("logtofile", LogLevelOption.Options.LOW)); + loggingNode.add(new LogLevelOption("logtoconsole", LogLevelOption.Options.HIGH)); + loggingNode.add(new LogLevelOption("logtochat", LogLevelOption.Options.MED)); + loggingNode.add(new LogLevelOption("logtoirc", LogLevelOption.Options.MED)); + loggingNode.add(new ShortStringOption("logtoirctag", "nocheat")); ParentOption activeNode = new ParentOption("active"); root.add(activeNode); @@ -65,29 +68,29 @@ public class Wizard extends JFrame { ParentOption speedhackNode = new ParentOption("speedhack"); root.add(speedhackNode); - speedhackNode.add(new StringOption("logmessage", "\"%1$s sent %2$d move events, but only %3$d were allowed. Speedhack?\"", textWidth)); + speedhackNode.add(new LongStringOption("logmessage", "\"%1$s sent %2$d move events, but only %3$d were allowed. Speedhack?\"")); { ParentOption speedhackLimitsNode = new ParentOption("limits"); speedhackNode.add(speedhackLimitsNode); - speedhackLimitsNode.add(new IntegerOption("low", 30, numberWidth)); - speedhackLimitsNode.add(new IntegerOption("med", 45, numberWidth)); - speedhackLimitsNode.add(new IntegerOption("high", 60, numberWidth)); + speedhackLimitsNode.add(new IntegerOption("low", 30)); + speedhackLimitsNode.add(new IntegerOption("med", 45)); + speedhackLimitsNode.add(new IntegerOption("high", 60)); ParentOption speedhackActionNode = new ParentOption("action"); speedhackNode.add(speedhackActionNode); - speedhackActionNode.add(new StringOption("low", "loglow cancel", fileWidth)); - speedhackActionNode.add(new StringOption("med", "logmed cancel", fileWidth)); - speedhackActionNode.add(new StringOption("high", "loghigh cancel", fileWidth)); + speedhackActionNode.add(new MediumStringOption("low", "loglow cancel")); + speedhackActionNode.add(new MediumStringOption("med", "logmed cancel")); + speedhackActionNode.add(new MediumStringOption("high", "loghigh cancel")); } ParentOption movingNode = new ParentOption("moving"); root.add(movingNode); - movingNode.add(new StringOption("logmessage", "\"Moving violation: %1$s from %2$s (%4$.1f, %5$.1f, %6$.1f) to %3$s (%7$.1f, %8$.1f, %9$.1f)\"", textWidth)); - movingNode.add(new StringOption("summarymessage", "\"Moving summary of last ~%2$d seconds: %1$s total Violations: (%3$d,%4$d,%5$d)\"", textWidth)); + movingNode.add(new LongStringOption("logmessage", "\"Moving violation: %1$s from %2$s (%4$.1f, %5$.1f, %6$.1f) to %3$s (%7$.1f, %8$.1f, %9$.1f)\"")); + movingNode.add(new LongStringOption("summarymessage", "\"Moving summary of last ~%2$d seconds: %1$s total Violations: (%3$d,%4$d,%5$d)\"")); movingNode.add(new BooleanOption("allowflying", false)); movingNode.add(new BooleanOption("allowfakesneak", true)); @@ -95,9 +98,9 @@ public class Wizard extends JFrame { ParentOption movingActionNode = new ParentOption("action"); movingNode.add(movingActionNode); - movingActionNode.add(new StringOption("low", "loglow cancel", fileWidth)); - movingActionNode.add(new StringOption("med", "logmed cancel", fileWidth)); - movingActionNode.add(new StringOption("high", "loghigh cancel", fileWidth)); + movingActionNode.add(new MediumStringOption("low", "loglow cancel")); + movingActionNode.add(new MediumStringOption("med", "logmed cancel")); + movingActionNode.add(new MediumStringOption("high", "loghigh cancel")); } ParentOption airbuildNode = new ParentOption("airbuild"); @@ -107,32 +110,32 @@ public class Wizard extends JFrame { ParentOption airbuildLimitsNode = new ParentOption("limits"); airbuildNode.add(airbuildLimitsNode); - airbuildLimitsNode.add(new IntegerOption("low", 30, numberWidth)); - airbuildLimitsNode.add(new IntegerOption("med", 45, numberWidth)); - airbuildLimitsNode.add(new IntegerOption("high", 60, numberWidth)); + airbuildLimitsNode.add(new IntegerOption("low", 30)); + airbuildLimitsNode.add(new IntegerOption("med", 45)); + airbuildLimitsNode.add(new IntegerOption("high", 60)); ParentOption airbuildActionNode = new ParentOption("action"); airbuildNode.add(airbuildActionNode); - airbuildActionNode.add(new StringOption("low", "loglow cancel", fileWidth)); - airbuildActionNode.add(new StringOption("med", "logmed cancel", fileWidth)); - airbuildActionNode.add(new StringOption("high", "loghigh cancel", fileWidth)); + airbuildActionNode.add(new MediumStringOption("low", "loglow cancel")); + airbuildActionNode.add(new MediumStringOption("med", "logmed cancel")); + airbuildActionNode.add(new MediumStringOption("high", "loghigh cancel")); } ParentOption bedteleportNode = new ParentOption("bedteleport"); root.add(bedteleportNode); - bedteleportNode.add(new EmptyOption()); ParentOption itemdupeNode = new ParentOption("itemdupe"); root.add(itemdupeNode); - itemdupeNode.add(new EmptyOption()); ParentOption bogusitemsNode = new ParentOption("bogusitems"); root.add(bogusitemsNode); - bogusitemsNode.add(new EmptyOption()); + ParentOptionGui root2 = new ParentOptionGui(root); + + inside.add(root2); JButton b = new JButton("TEST"); @@ -145,7 +148,7 @@ public class Wizard extends JFrame { JOptionPane.showMessageDialog(null, s); } }); - + b.setAlignmentY(0.0F); inside.add(b); inside.doLayout(); diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ChildOptionGuiFactory.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ChildOptionGuiFactory.java new file mode 100644 index 00000000..588675a8 --- /dev/null +++ b/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ChildOptionGuiFactory.java @@ -0,0 +1,99 @@ +package cc.co.evenprime.bukkit.nocheat.wizard.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.InputVerifier; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JTextField; + +import cc.co.evenprime.bukkit.nocheat.wizard.options.BooleanOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.ChildOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.LogLevelOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.TextFieldOption; + +public class ChildOptionGuiFactory { + + public static JComponent create(ChildOption option) { + + if(option instanceof BooleanOption) { + return createBoolean((BooleanOption)option); + } + else if(option instanceof TextFieldOption) { + return createTextField((TextFieldOption)option); + } + else if(option instanceof LogLevelOption) { + return createLogLevel((LogLevelOption)option); + } + + throw new RuntimeException("Unknown ChildOption " + option); + } + + private static JComboBox createLogLevel(final LogLevelOption option) { + + final JComboBox comboBox = new JComboBox(); + + for(LogLevelOption.Options o : LogLevelOption.Options.values()) + comboBox.addItem(o); + + comboBox.setSelectedItem(option.getOptionValue()); + + comboBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + option.setValue((LogLevelOption.Options)comboBox.getSelectedItem()); + + } + + }); + + return comboBox; + } + + private static JCheckBox createBoolean(final BooleanOption option) { + + final JCheckBox checkBox = new JCheckBox(); + checkBox.setSelected(option.getBooleanValue()); + checkBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + option.setValue(checkBox.isSelected()); + + } + }); + + return checkBox; + } + + private static JTextField createTextField(final TextFieldOption option) { + + final JTextField textField = new JTextField(option.getValue()); + + if(option.hasPreferredLength()) { + textField.setColumns(option.getPreferredLength()); + } + + textField.setInputVerifier(new InputVerifier() { + + @Override + public boolean verify(JComponent arg0) { + + if(option.setValue(textField.getText())){ + return true; + } + else { + JOptionPane.showMessageDialog(textField, "Illegal value for this field"); + textField.setText(option.getValue()); + return false; + } + } + }); + + return textField; + } +} diff --git a/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ParentOptionGui.java b/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ParentOptionGui.java new file mode 100644 index 00000000..472d934a --- /dev/null +++ b/src/cc/co/evenprime/bukkit/nocheat/wizard/gui/ParentOptionGui.java @@ -0,0 +1,97 @@ +package cc.co.evenprime.bukkit.nocheat.wizard.gui; + +import java.awt.Color; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.util.LinkedList; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import cc.co.evenprime.bukkit.nocheat.wizard.options.ChildOption; +import cc.co.evenprime.bukkit.nocheat.wizard.options.Option; +import cc.co.evenprime.bukkit.nocheat.wizard.options.ParentOption; + +public class ParentOptionGui extends JPanel { + + /** + * + */ + private static final long serialVersionUID = 5277750257203546802L; + + private ParentOption option; + private LinkedList