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);
19 layout.appendColumn(0, ProportionLayout.NO_PROPORTION);
20 layout.appendColumn(10);
21 layout.appendColumn(0, 1.0);
22 layout.appendColumn(0);
23 layout.appendRow(0, 1.0);
24 layout.appendRow(0, ProportionLayout.NO_PROPORTION);
25 layout.appendRow(10);
26 layout.appendRow(0, ProportionLayout.NO_PROPORTION);
27 layout.appendRow(0, 1.0);
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 }