-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSetupWindow.java
More file actions
118 lines (105 loc) · 3.84 KB
/
SetupWindow.java
File metadata and controls
118 lines (105 loc) · 3.84 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
package Chat;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* Setup window for Chat program
*
* @author joar
*/
public class SetupWindow extends JFrame {
private JPanel masterPanel;
private JPanel runPanel;
private JPanel infoPanel;
private JCheckBox runAsServer;
private JCheckBox runAsClient;
private JCheckBox multiConversation;
private JButton connect;
private JTextField ip;
private JTextField port;
/**
* Creates a setup window that lets the user decide if it wants to run as a
* server/client and if it should be a multi conversation.
*/
public SetupWindow() {
masterPanel = new JPanel();
runPanel = new JPanel();
infoPanel = new JPanel();
runAsServer = new JCheckBox("Run as server");
runAsClient = new JCheckBox("Run as Client");
multiConversation = new JCheckBox("Multi conversation");
ip = new JTextField("127.0.0.1");
port = new JTextField("2222");
connect = new JButton("Connect");
connect.setBackground(Color.green);
connect.setEnabled(false);
connect.addActionListener((ActionEvent e) -> {
if (runAsClient.isSelected()) {
try {
Client client = new Client(ip.getText(),
Integer.parseInt(port.getText()));
} catch (NumberFormatException | IOException exception) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame,
"Could not conect to server" + exception.toString());
}
} else {
try {
Server server = new Server(Integer.parseInt(
port.getText()), multiConversation.isSelected());
} catch (Exception exception) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame,
"Could not start server");
}
}
});
runAsClient.addItemListener((ItemEvent e) -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
runAsServer.setSelected(false);
connect.setEnabled(true);
ip.setEnabled(true);
multiConversation.setSelected(false);
multiConversation.setEnabled(false);
} else {
multiConversation.setEnabled(true);
runAsServer.setSelected(true);
ip.setEnabled(false);
}
});
runAsServer.addItemListener((ItemEvent e) -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
runAsClient.setSelected(false);
connect.setEnabled(true);
} else {
runAsClient.setSelected(true);
}
});
ip.setPreferredSize(new Dimension(200, 20));
port.setPreferredSize(new Dimension(200, 20));
ip.setEnabled(false);
port.setEnabled(true);
runPanel.add(runAsClient);
runPanel.add(runAsServer);
runPanel.add(multiConversation);
runPanel.add(connect);
masterPanel.add(runPanel);
masterPanel.setPreferredSize(new Dimension(550, 100));
infoPanel.add(ip);
infoPanel.add(port);
masterPanel.add(infoPanel);
SetupWindow.this.add(masterPanel);
SetupWindow.this.pack();
SetupWindow.this.setVisible(true);
SetupWindow.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}