View Javadoc

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);                                 // 0 empty
26          layout.appendColumn(0, ProportionLayout.NO_PROPORTION);  // 1
27          layout.appendColumn(10);                                 // 2 empty
28          layout.appendColumn(0, 1.0);                             // 3
29          layout.appendColumn(20, ProportionLayout.NO_PROPORTION); // 4
30          layout.appendColumn(10);                                 // 5 empty
31          layout.appendRow(0, 1.0);                            // 0 empty
32          layout.appendRow(0, ProportionLayout.NO_PROPORTION); // 1
33          layout.appendRow(10);                                // 2 empty
34          layout.appendRow(0, ProportionLayout.NO_PROPORTION); // 3
35          layout.appendRow(10);                                // 4 empty
36          layout.appendRow(0, ProportionLayout.NO_PROPORTION); // 5
37          layout.appendRow(0, 1.0);                            // 6 empty
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  }