1 package nl.tudelft.goal.ut2004.visualizer.panels.connection;
2
3 import java.awt.Color;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.awt.event.KeyAdapter;
7 import java.awt.event.KeyEvent;
8 import java.net.URI;
9 import java.net.URISyntaxException;
10
11 import javax.swing.JButton;
12 import javax.swing.JLabel;
13 import javax.swing.JPanel;
14 import javax.swing.JTextField;
15
16 public class NotConnectedPanel extends JPanel {
17
18 private final JTextField serverAddressField;
19 private final JLabel notice;
20 private IConnect serverConnectionPanel;
21 private final JButton connectButton;
22
23 public NotConnectedPanel(IConnect panel) {
24 this.serverAddressField = createServerAddressField();
25 this.connectButton = createConnectButton();
26 this.notice = createNotice();
27 this.serverConnectionPanel = panel;
28
29 add(serverAddressField);
30 add(connectButton);
31 add(notice);
32 }
33
34 private JButton createConnectButton() {
35 JButton connectButton = new JButton("Connect");
36 connectButton.addActionListener(new ActionListener() {
37
38 @Override
39 public void actionPerformed(ActionEvent e) {
40 tryConnectToServerAddress();
41 }
42 });
43
44 return connectButton;
45 }
46
47 private JTextField createServerAddressField() {
48 JTextField text = new JTextField(20);
49 text.setText("ut://127.0.0.1:3001");
50
51 text.addKeyListener(new KeyAdapter() {
52
53 @Override
54 public void keyReleased(KeyEvent e) {
55 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
56 tryConnectToServerAddress();
57 }
58 }
59
60 });
61
62 return text;
63 }
64
65 private JLabel createNotice() {
66 JLabel notice = new JLabel();
67 notice.setForeground(Color.BLUE);
68 return notice;
69 }
70
71 private void tryConnectToServerAddress() {
72
73 String serverAddress = serverAddressField.getText();
74 URI serverURI;
75 try {
76 serverURI = new URI(serverAddress);
77 } catch (URISyntaxException e) {
78 notice.setText("A valid address has the form ut://<address>:<port>");
79 return;
80 }
81
82 if (serverURI.getPort() == -1 || serverURI.getHost() == null) {
83 notice.setText("A valid address has the form ut://<address>:<port>");
84 return;
85 }
86
87 notice.setText("");
88 serverConnectionPanel.connect(serverURI);
89 }
90 }