-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayerSelectFrame.java
More file actions
230 lines (200 loc) · 9.3 KB
/
PlayerSelectFrame.java
File metadata and controls
230 lines (200 loc) · 9.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.image.BufferedImage;
public class PlayerSelectFrame extends JFrame implements FocusListener, ActionListener, ChangeListener {
//Border Initialization
Border compound = BorderFactory.createCompoundBorder(BorderFactory.createRaisedBevelBorder(), BorderFactory.createLoweredBevelBorder());
//Creating GUI
JPanel playerPanel = new JPanel(new GridLayout(2, 1));
JPanel customizationPanel = new JPanel(new GridLayout(1, 2));
JPanel containedPanel = new JPanel(new GridLayout(1, 2));
JPanel colorPanel = new JPanel(new GridLayout(1,2));
JTextField nameField = new JTextField("Name Your Player");
JColorChooser jcc = new JColorChooser();
JComboBox pieceBox = new JComboBox();
JButton openJCC = new JButton("Color Identifier");
String[] tokens = {"Thimble","Wheel-Barrow","Shoe","Dog","Car","Iron","Top-Hat","Ship"};
JButton lockIn = new JButton("Lock In");
//Initializing Variables
String name, token;
boolean lockedIn;
StartGame reference;
Color identifier;
//Creation of ColorChooser Items
JFrame colorFrame = new JFrame();
Color color = new Color(100, 100, 100);
JTextArea colorView = new JTextArea();
int x,y,width,height, playerNumber;
Color colorChoice = Color.white;
public PlayerSelectFrame(String name, String token, Color identifier, boolean lockedIn, StartGame reference, int playerNumber, int x, int y, int width, int height){
this.setResizable(false);
this.x=x;
this.y=y;
this.height=height;
this.width=width;
this.identifier = identifier;
this.playerNumber=playerNumber;
this.reference = reference;
this.name = name;
this.token = token;
this.lockedIn = lockedIn;
this.add(playerPanel);
//Add items to panel
playerPanel.setBorder(compound);
playerPanel.add(customizationPanel);
customizationPanel.setBorder(compound);
customizationPanel.add(nameField);
customizationPanel.add(colorPanel);
colorPanel.add(openJCC);
nameField.setBorder(compound);
nameField.addFocusListener(this);
nameField.setHorizontalAlignment(JTextField.CENTER);
nameField.setForeground(color);
openJCC.addActionListener(this);
openJCC.setBackground(Color.white);
openJCC.setToolTipText("Click to choose a color identifier.");
openJCC.setBorder(compound);
colorPanel.add(colorView);
colorView.setBorder(compound);
colorView.setEnabled(false);
colorView.setBackground(Color.white);
playerPanel.add(containedPanel);
containedPanel.add(pieceBox);
pieceBox.addItem("Choose Token");
for (int i = 0; i < tokens.length; i++)
pieceBox.addItem(tokens[i]);
pieceBox.setBorder(compound);
pieceBox.setBackground(Color.white);
containedPanel.add(lockIn);
lockIn.addActionListener(this);
lockIn.setBorder(compound);
lockIn.setBackground(Color.white);
lockIn.setToolTipText("Click to lock in player characteristics.");
containedPanel.setBorder(compound);
//ColorChanger getting choice color
jcc.getSelectionModel().addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent arg0){
colorChoice = jcc.getColor();
colorView.setBackground(colorChoice);
}
});
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
public void colorChooserOpen(){
colorFrame.setBounds(x,y,width,height);
colorFrame.setTitle("Player "+this.getPlayerNumber()+"'s Color");
colorFrame.setVisible(true);
colorFrame.add(jcc);
}
public void focusGained(FocusEvent e){
if (e.getSource() == nameField && nameField.getText().equals("Name Your Player")){
nameField.setText("");
nameField.setForeground(Color.black);
}
}
@Override
public void focusLost(FocusEvent e){
if (e.getSource() == nameField && nameField.getText().equals("")){
nameField.setText("Name Your Player");
nameField.setForeground(color);
}
}
public String getName(){
return name;
}
public Color getIdentifier(){
return identifier;
}
public void setIdentifier(Color identifier){
this.identifier = identifier;
}
public void setName(String name){
this.name = name;
}
public String getToken(){
return token;
}
public void setToken(String token){
this.token = token;
}
public boolean isLockedIn(){
return lockedIn;
}
public void setLockedIn(boolean lockedIn){
this.lockedIn = lockedIn;
}
public int getPlayerNumber(){
return playerNumber;
}
public void voidInfo(){
lockIn.setEnabled(true);
nameField.setText("");
pieceBox.setSelectedIndex(0);
pieceBox.setEnabled(true);
nameField.setEditable(true);
nameField.setForeground(Color.black);
openJCC.setEnabled(true);
colorView.setBackground(Color.white);
colorFrame.setVisible(false);
}
public boolean checkLockIn(){
return lockedIn;
}
@Override
public void actionPerformed(ActionEvent e){
if (e.getSource() == lockIn && !pieceBox.getSelectedItem().toString().equals("Choose Token") && !nameField.getText().equals("Name Your Player") && colorChoice!=Color.white){
if(reference.orderList.contains(playerNumber-1)?false:true){
JOptionPane.showMessageDialog(reference.m.banner,"You must register players in ascending numerical order.","Registration Error",JOptionPane.ERROR_MESSAGE);
}
else if (reference.getTokenList().contains(pieceBox.getSelectedItem().toString())){
JOptionPane.showMessageDialog(reference.m.banner, "Another player has already chosen that token. Pick another.", "Duplication Error", JOptionPane.ERROR_MESSAGE);
}
else if (reference.getNameList().contains(nameField.getText())){
JOptionPane.showMessageDialog(reference.m.banner, "Another player has already chosen that name. Pick another.", "Duplication Error", JOptionPane.ERROR_MESSAGE);
}
else if(reference.getColorList().contains(colorChoice)){
JOptionPane.showMessageDialog(reference.m.banner, "Another player has already chosen that color. Pick another.", "Duplication Error", JOptionPane.ERROR_MESSAGE);
}
else{
reference.addToTokenList(pieceBox.getSelectedItem().toString());
reference.addNameToList(nameField.getText());
reference.addColorToList(colorChoice);
reference.addToOrderList(playerNumber);
this.setName(nameField.getText());
this.setToken(pieceBox.getSelectedItem().toString());
this.setLockedIn(true);
lockIn.setEnabled(false);
pieceBox.setEnabled(false);
nameField.setEditable(false);
this.setTitle("Player: "+nameField.getText());
nameField.setText("Your name is: " + nameField.getText() + ".");
colorFrame.setVisible(false);
openJCC.setEnabled(false);
if(reference.getTokenList().size()>=2)
reference.confirmButton.setEnabled(true);
}
}
else if (e.getSource() == lockIn && pieceBox.getSelectedItem().toString().equals("Choose Token")){
JOptionPane.showMessageDialog(reference.m.banner, "You cannot choose that as your token. It is a filler item to direct you.");
}
else if (e.getSource() == lockIn && !pieceBox.getSelectedItem().toString().equals("Choose Token") && nameField.getText().equals("Name Your Player"))
JOptionPane.showMessageDialog(reference.m.banner, "You aren't the main character of Ralph Ellison's \"Invisible Man\". You have a name, I presume.", "Choose a Name", 2);
else if(e.getSource() == lockIn && !pieceBox.getSelectedItem().toString().equals("Choose Token") && !nameField.getText().equals("Name Your Player") && colorChoice == Color.white){
JOptionPane.showMessageDialog(reference.m.banner, "You cannot be that color. It is not a clear identifier.", "Pick a Color Identifier", 2);
}
else if(e.getSource()==openJCC){
colorChooserOpen();
}
}
@Override
public void stateChanged(ChangeEvent e){}
}