View Javadoc

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  }