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 }