View Javadoc

1   package net.sourceforge.simplegamenet.specs.tools;
2   
3   import javax.swing.*;
4   import net.sourceforge.simplegamenet.specs.gui.PlayerSettingsPanel;
5   import net.sourceforge.simplegamenet.specs.to.PlayerSettings;
6   import net.sourceforge.simplegamenet.util.proportionlayout.ProportionConstraints;
7   import net.sourceforge.simplegamenet.util.proportionlayout.ProportionLayout;
8   
9   public class StandardPlayerSettingsPanel extends PlayerSettingsPanel {
10  
11      private JLabel nicknameLabel = new JLabel("Nickname:");
12      private JTextField nicknameTextField;
13      private JLabel playingStateLabel = new JLabel("Playing state:");
14      private JComboBox playingStateComboBox = new JComboBox();
15  
16      public StandardPlayerSettingsPanel(String nickname, int playingState) {
17          ProportionLayout layout = new ProportionLayout();
18          layout.appendColumn(0);                                 // 0 empty
19          layout.appendColumn(0, ProportionLayout.NO_PROPORTION); // 1
20          layout.appendColumn(10);                                // 2 empty
21          layout.appendColumn(0, 1.0);                            // 3
22          layout.appendColumn(0);                                 // 4 empty
23          layout.appendRow(0, 1.0);                            // 0 empty
24          layout.appendRow(0, ProportionLayout.NO_PROPORTION); // 1
25          layout.appendRow(10);                                // 2 empty
26          layout.appendRow(0, ProportionLayout.NO_PROPORTION); // 3
27          layout.appendRow(0, 1.0);                            // 4 empty
28          setLayout(layout);
29  
30          add(nicknameLabel, new ProportionConstraints(1, 1));
31          nicknameTextField = new JTextField(nickname);
32          add(nicknameTextField, new ProportionConstraints(3, 1));
33          add(playingStateLabel, new ProportionConstraints(1, 3));
34          playingStateComboBox.addItem("Participating");
35          playingStateComboBox.addItem("Observing");
36          switch (playingState) {
37              case PlayerSettings.PARTICIPATING:
38                  playingStateComboBox.setSelectedIndex(0);
39                  break;
40              case PlayerSettings.OBSERVING:
41                  playingStateComboBox.setSelectedIndex(1);
42                  break;
43          }
44          add(playingStateComboBox, new ProportionConstraints(3, 3));
45      }
46  
47      public boolean areSettingsAcceptable() {
48          String nickname = nicknameTextField.getText().replaceAll(" ", "_");
49          if (nickname.equals("")) {
50              JOptionPane.showMessageDialog(getTopLevelAncestor(),
51                      "Please fill in a nickname.",
52                      "Invalid settings",
53                      JOptionPane.ERROR_MESSAGE);
54              return false;
55          }
56          if (nickname.length() > PlayerSettings.MAXIMUM_NICKNAME_LENGTH) {
57              JOptionPane.showMessageDialog(getTopLevelAncestor(),
58                      "Your nickname may not be longer then "
59                      + PlayerSettings.MAXIMUM_NICKNAME_LENGTH
60                      + " characters.",
61                      "Invalid settings",
62                      JOptionPane.ERROR_MESSAGE);
63              return false;
64          }
65          return true;
66      }
67  
68      public void setEnabled(boolean enabled) {
69          super.setEnabled(enabled);
70          nicknameTextField.setEnabled(enabled);
71          playingStateComboBox.setEnabled(enabled);
72      }
73  
74      public String getNickname() {
75          return nicknameTextField.getText().replaceAll(" ", "_");
76      }
77  
78      public int getPlayingState() {
79          switch (playingStateComboBox.getSelectedIndex()) {
80              case 0:
81                  return PlayerSettings.PARTICIPATING;
82              case 1:
83                  return PlayerSettings.OBSERVING;
84          }
85          return -1;
86      }
87  
88  }