package org.intrace.client.gui.helper; import java.net.InetSocketAddress; import java.net.Socket; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; public class Connection { // State public enum ConnectState { DISCONNECTED_ERR("Disconnected"), DISCONNECTED("Disconnected"), CONNECTING("Connecting"), CONNECTED("Connected"); public final String str; private ConnectState(String xiStr) { str = xiStr; } } public static interface ISocketCallback { public void setSocket(Socket socket); public void setConnectionStatus(final String statusText); } public static void connectToAgent(final ISocketCallback socketCallback, final Shell sShell, final String host, final String port) { if (host.length() == 0) { displayError(sShell, "Please enter an address"); socketCallback.setConnectionStatus("Error: Please enter an address"); socketCallback.setSocket(null); } else if (port.length() == 0) { displayError(sShell, "Please enter a port"); socketCallback.setConnectionStatus("Error: Please enter a port"); socketCallback.setSocket(null); } else { new Thread(new Runnable() { @Override public void run() { socketCallback.setConnectionStatus("Connecting..."); final Socket socket = new Socket(); try { socket.connect(new InetSocketAddress(host, Integer.valueOf(port))); socketCallback.setSocket(socket); } catch (Exception e) { socketCallback.setConnectionStatus("Error: " + e.getMessage()); socketCallback.setSocket(null); } } }).start(); } } private static void displayError(Shell sShell, String errorMessage) { MessageBox errorMB = new MessageBox(sShell, SWT.OK | SWT.ICON_WARNING); errorMB.setMessage(errorMessage); errorMB.setText("Connection Error"); errorMB.open(); } }