Fixing errors when clicking checkboxes

This commit is contained in:
Diego Waxemberg
2014-01-01 18:45:27 -05:00
parent 00b54a201c
commit e23e49920a
+27 -12
View File
@@ -77,6 +77,7 @@ public class GamepadConfigFrame extends JFrame {
Mapping mapping = config.get(components[i]); Mapping mapping = config.get(components[i]);
if (mapping == null) { if (mapping == null) {
mapping = config.new Mapping(components[i], false, false); mapping = config.new Mapping(components[i], false, false);
config.insertMapping(mapping, null);
} }
Box componentBox = createComponentBox(mapping); Box componentBox = createComponentBox(mapping);
@@ -118,10 +119,12 @@ public class GamepadConfigFrame extends JFrame {
setButtonText(mapButton, config.getMapping(mapping.padComp)); setButtonText(mapButton, config.getMapping(mapping.padComp));
invertBox.setSelected(mapping.invert); invertBox.setSelected(mapping.invert);
invertBox.addItemListener(createInvertListener()); invertBox.addActionListener(createInvertListener());
invertBox.setName(mapping.padComp.name());
triggerBox.setSelected(mapping.trigger); triggerBox.setSelected(mapping.trigger);
triggerBox.addItemListener(createTriggerListener()); triggerBox.addActionListener(createTriggerListener());
triggerBox.setName(mapping.padComp.name());
triggerBox.setToolTipText("If this component should act as a trigger. (one-way axis)"); triggerBox.setToolTipText("If this component should act as a trigger. (one-way axis)");
componentBox.add(Box.createHorizontalStrut(5)); componentBox.add(Box.createHorizontalStrut(5));
@@ -143,30 +146,42 @@ public class GamepadConfigFrame extends JFrame {
/* /*
* Creates the listener for the invert checkbox * Creates the listener for the invert checkbox
*/ */
private ItemListener createInvertListener() { private ActionListener createInvertListener() {
return new ItemListener() { return new ActionListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void actionPerformed(ActionEvent e) {
JCheckBox clicked = (JCheckBox)e.getItem(); JCheckBox clicked = (JCheckBox)e.getSource();
GamepadComponent padComp = GamepadComponent.valueOf(clicked.getName()); GamepadComponent padComp = GamepadComponent.valueOf(clicked.getName());
config.get(padComp).invert = (e.getStateChange() == ItemEvent.SELECTED); Mapping currentMapping = config.get(padComp);
if (currentMapping == null) {
//this makes more semantic sense to me than using !=
clicked.setSelected(!(clicked.isSelected()));
} else {
currentMapping.invert = (clicked.isSelected());
configChanged = true; configChanged = true;
} }
}
}; };
} }
/* /*
* Creates the listener for the trigger checkbox * Creates the listener for the trigger checkbox
*/ */
private ItemListener createTriggerListener() { private ActionListener createTriggerListener() {
return new ItemListener() { return new ActionListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void actionPerformed(ActionEvent e) {
JCheckBox clicked = (JCheckBox)e.getItem(); JCheckBox clicked = (JCheckBox)e.getSource();
GamepadComponent padComp = GamepadComponent.valueOf(clicked.getName()); GamepadComponent padComp = GamepadComponent.valueOf(clicked.getName());
config.get(padComp).trigger = (e.getStateChange() == ItemEvent.SELECTED); Mapping currentMapping = config.get(padComp);
if (currentMapping == null) {
//this makes more semantic sense to me than using !=
clicked.setSelected(!(clicked.isSelected()));
} else {
currentMapping.trigger = (clicked.isSelected());
configChanged = true; configChanged = true;
} }
}
}; };
} }