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  import java.util.prefs.Preferences;
11  
12  import javax.swing.JButton;
13  import javax.swing.JLabel;
14  import javax.swing.JPanel;
15  import javax.swing.JTextField;
16  
17  public class NotConnectedPanel extends JPanel {
18  
19  	private static final String SERVER_ADDRESS_KEY = "SERVER_ADDRESS";
20  	private static final String LOCAL_UT_SERVER = "ut://127.0.0.1:3001";
21  	private static Preferences preferences = Preferences.userNodeForPackage(NotConnectedPanel.class);
22  	private final JTextField serverAddressField;
23  	private final JLabel notice;
24  	private IConnect serverConnectionPanel;
25  	private final JButton connectButton;
26  
27  	public NotConnectedPanel(IConnect panel) {
28  		this.serverAddressField = createServerAddressField();
29  		this.connectButton = createConnectButton();
30  		this.notice = createNotice();
31  		this.serverConnectionPanel = panel;
32  
33  		add(serverAddressField);
34  		add(connectButton);
35  		add(notice);
36  	}
37  	
38  
39  	private JButton createConnectButton() {
40  		JButton connectButton = new JButton("Connect");
41  		connectButton.addActionListener(new ActionListener() {
42  
43  			@Override
44  			public void actionPerformed(ActionEvent e) {
45  				tryConnectToServerAddress();
46  			}
47  		});
48  
49  		return connectButton;
50  	}
51  
52  	private JTextField createServerAddressField() {
53  		JTextField text = new JTextField(20);
54  		String serverAddress = preferences.get(SERVER_ADDRESS_KEY, LOCAL_UT_SERVER);
55  		text.setText(serverAddress);
56  
57  		text.addKeyListener(new KeyAdapter() {
58  
59  			@Override
60  			public void keyReleased(KeyEvent e) {
61  				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
62  					tryConnectToServerAddress();
63  				}
64  			}
65  
66  		});
67  
68  		return text;
69  	}
70  
71  	private JLabel createNotice() {
72  		JLabel notice = new JLabel();
73  		notice.setForeground(Color.BLUE);
74  		return notice;
75  	}
76  
77  	private void tryConnectToServerAddress() {
78  
79  		String serverAddress = serverAddressField.getText();
80  		URI serverURI;
81  		try {
82  			serverURI = new URI(serverAddress);
83  		} catch (URISyntaxException e) {
84  			notice.setText("A valid address has the form ut://<address>:<port>");
85  			return;
86  		}
87  
88  		if (serverURI.getPort() == -1 || serverURI.getHost() == null) {
89  			notice.setText("A valid address has the form ut://<address>:<port>");
90  			return;
91  		}
92  
93  		notice.setText("");
94  		preferences.put(SERVER_ADDRESS_KEY, serverAddress);
95  		serverConnectionPanel.connect(serverURI);
96  	}
97  
98  
99  }