package cryodex.modules.xwing; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import cryodex.Player; import cryodex.modules.ModulePlayer; import cryodex.modules.RegistrationPanel; import cryodex.modules.xwing.XWingPlayer.Faction; public class XWingRegistrationPanel implements RegistrationPanel { private JTextField squadField; private JCheckBox firstRoundByeCheckbox; private JPanel panel; private JComboBox<Faction> factionCombo; @Override public JPanel getPanel() { if (panel == null) { panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1; gbc.anchor = GridBagConstraints.EAST; panel.add(new JLabel("<html><b>X-Wing</b></html>"), gbc); gbc.gridy++; panel.add(new JLabel("Squadron Builder ID"), gbc); gbc.gridy++; panel.add(getSquadField(), gbc); gbc.gridy++; panel.add(new JLabel("Faction"), gbc); gbc.gridy++; panel.add(getFactionCombo(), gbc); gbc.gridy++; panel.add(getFirstRoundByeCheckbox(), gbc); } return panel; } private JComboBox<Faction> getFactionCombo() { if(factionCombo == null){ factionCombo = new JComboBox<XWingPlayer.Faction>(); factionCombo.addItem(Faction.IMPERIAL); factionCombo.addItem(Faction.REBEL); factionCombo.addItem(Faction.SCUM); factionCombo.setSelectedIndex(-1); } return factionCombo; } private JTextField getSquadField() { if (squadField == null) { squadField = new JTextField(); } return squadField; } private JCheckBox getFirstRoundByeCheckbox() { if (firstRoundByeCheckbox == null) { firstRoundByeCheckbox = new JCheckBox("First Round Bye"); } return firstRoundByeCheckbox; } @Override public void save(Player player) { XWingPlayer xp = null; // get module information if (player.getModuleInfo() != null && player.getModuleInfo().isEmpty() == false) { for (ModulePlayer mp : player.getModuleInfo()) { if (mp instanceof XWingPlayer) { xp = (XWingPlayer) mp; break; } } } // if no module information, create one and add it to player if (xp == null) { xp = new XWingPlayer(player); player.getModuleInfo().add(xp); } // update module information xp.setSquadId(getSquadField().getText()); xp.setFirstRoundBye(getFirstRoundByeCheckbox().isSelected()); xp.setFaction((Faction) getFactionCombo().getSelectedItem()); } @Override public void load(Player player) { XWingPlayer xp = null; // get module information if (player != null && player.getModuleInfo() != null && player.getModuleInfo().isEmpty() == false) { for (ModulePlayer mp : player.getModuleInfo()) { if (mp instanceof XWingPlayer) { xp = (XWingPlayer) mp; break; } } } // if no module information, create one and add it to player if (xp != null) { getSquadField().setText(xp.getSquadId()); getFirstRoundByeCheckbox().setSelected(xp.isFirstRoundBye()); getFactionCombo().setSelectedItem(xp.getFaction()); } else { clearFields(); } } @Override public void clearFields() { getSquadField().setText(""); getFactionCombo().setSelectedIndex(-1); getFirstRoundByeCheckbox().setSelected(false); } }