1 package net.sourceforge.simplegamenet.framework.gui;
2
3 import javax.swing.*;
4 import net.sourceforge.simplegamenet.specs.to.PlayerSettings;
5 import net.sourceforge.simplegamenet.util.proportionlayout.ProportionConstraints;
6 import net.sourceforge.simplegamenet.util.proportionlayout.ProportionLayout;
7
8 class HostSettingsPanel extends JPanel {
9
10 private ConnectionWizardDialog connectionWizardDialog;
11
12 private JLabel nicknameLabel = new JLabel("Nickname:");
13 private JTextField nicknameTextField;
14 private JLabel portLabel = new JLabel("Port:");
15 private JSpinner portSpinner;
16 private JCheckBox badLanguageFilteredCheckBox;
17
18 private ConnectionConfig connectionConfig;
19
20 HostSettingsPanel(ConnectionWizardDialog connectionWizardDialog) {
21 this.connectionWizardDialog = connectionWizardDialog;
22 connectionConfig = connectionWizardDialog.getConnectionConfig();
23
24 ProportionLayout layout = new ProportionLayout();
25 layout.appendColumn(10);
26 layout.appendColumn(0, ProportionLayout.NO_PROPORTION);
27 layout.appendColumn(10);
28 layout.appendColumn(0, 1.0);
29 layout.appendColumn(20, ProportionLayout.NO_PROPORTION);
30 layout.appendColumn(10);
31 layout.appendRow(0, 1.0);
32 layout.appendRow(0, ProportionLayout.NO_PROPORTION);
33 layout.appendRow(10);
34 layout.appendRow(0, ProportionLayout.NO_PROPORTION);
35 layout.appendRow(10);
36 layout.appendRow(0, ProportionLayout.NO_PROPORTION);
37 layout.appendRow(0, 1.0);
38 setLayout(layout);
39
40 nicknameTextField = new JTextField(connectionConfig.getNickname(),
41 PlayerSettings.MAXIMUM_NICKNAME_LENGTH);
42 SpinnerNumberModel portSpinnerModel = new SpinnerNumberModel(connectionConfig.getPort(), 0,
43 (int) Short.MAX_VALUE, 1);
44 portSpinner = new JSpinner(portSpinnerModel);
45 portSpinner.setEditor(new JSpinner.NumberEditor(portSpinner, "#"));
46 badLanguageFilteredCheckBox = new JCheckBox("Filter bad language",
47 connectionConfig.isBadLanguageFiltered());
48 add(nicknameLabel, new ProportionConstraints(1, 1));
49 add(nicknameTextField, new ProportionConstraints(3, 1, 2, 1, 3, 1));
50 add(portLabel, new ProportionConstraints(1, 3));
51 add(portSpinner, new ProportionConstraints(4, 3));
52 add(badLanguageFilteredCheckBox, new ProportionConstraints(1, 5, 4, 1, 3, 5));
53 }
54
55 boolean areSettingsAcceptable() {
56 try {
57 connectionConfig.setNickname(nicknameTextField.getText());
58 } catch (IllegalArgumentException e) {
59 JOptionPane.showMessageDialog(connectionWizardDialog, e.getMessage(),
60 "Invalid settings", JOptionPane.ERROR_MESSAGE);
61 return false;
62 }
63 try {
64 connectionConfig.setPort(((Integer) (portSpinner.getValue())).intValue());
65 } catch (IllegalArgumentException e) {
66 JOptionPane.showMessageDialog(connectionWizardDialog, e.getMessage(),
67 "Invalid settings", JOptionPane.ERROR_MESSAGE);
68 return false;
69 }
70 connectionConfig.setBadLanguageFiltered(badLanguageFilteredCheckBox.isSelected());
71 return true;
72 }
73
74 }