148 lines
3.7 KiB
Java
148 lines
3.7 KiB
Java
package buffered;
|
|
|
|
import java.awt.BorderLayout;
|
|
import java.awt.EventQueue;
|
|
import java.awt.GridLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.io.IOException;
|
|
|
|
import javax.swing.JButton;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTextField;
|
|
import javax.swing.JTextPane;
|
|
import javax.swing.border.EmptyBorder;
|
|
|
|
public class ClientGUI extends JFrame {
|
|
|
|
private JPanel contentPane;
|
|
private JTextField userinput;
|
|
private JTextField txtPort;
|
|
private JScrollPane scrollPane;
|
|
private JTextPane textPane;
|
|
private BufferedNetworkStackClient client = null;
|
|
private JTextField txtHost;
|
|
|
|
/**
|
|
* Launch the application.
|
|
*/
|
|
public static void main(String[] args) {
|
|
EventQueue.invokeLater(new Runnable() {
|
|
public void run() {
|
|
try {
|
|
ClientGUI frame = new ClientGUI();
|
|
frame.setVisible(true);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Create the frame.
|
|
*/
|
|
public ClientGUI() {
|
|
setResizable(false);
|
|
client = new BufferedNetworkStackClient();
|
|
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setBounds(100, 100, 450, 369);
|
|
contentPane = new JPanel();
|
|
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
|
setContentPane(contentPane);
|
|
contentPane.setLayout(new BorderLayout(0, 0));
|
|
|
|
JPanel panelPref = new JPanel();
|
|
contentPane.add(panelPref, BorderLayout.NORTH);
|
|
panelPref.setLayout(new GridLayout(0, 4, 0, 0));
|
|
|
|
JLabel lblHost = new JLabel("Hostname:");
|
|
panelPref.add(lblHost);
|
|
|
|
txtHost = new JTextField();
|
|
txtHost.setText("localhost");
|
|
panelPref.add(txtHost);
|
|
txtHost.setColumns(10);
|
|
|
|
JLabel lblPort = new JLabel("Port:");
|
|
panelPref.add(lblPort);
|
|
|
|
txtPort = new JTextField();
|
|
panelPref.add(txtPort);
|
|
txtPort.setText("9999");
|
|
txtPort.setColumns(10);
|
|
|
|
JLabel lblMessage = new JLabel("Message:");
|
|
panelPref.add(lblMessage);
|
|
|
|
userinput = new JTextField();
|
|
userinput.setText("asd");
|
|
panelPref.add(userinput);
|
|
userinput.setColumns(10);
|
|
|
|
JButton btnPush = new JButton("Push");
|
|
panelPref.add(btnPush);
|
|
|
|
JButton btnPop = new JButton("Pop");
|
|
panelPref.add(btnPop);
|
|
|
|
JButton btnPrint = new JButton("Print");
|
|
btnPrint.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
try {
|
|
client.print(txtHost.getText(),
|
|
Integer.valueOf(txtPort.getText()));
|
|
} catch (NumberFormatException e1) {
|
|
e1.printStackTrace();
|
|
} catch (IOException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
panelPref.add(btnPrint);
|
|
btnPop.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
String received = "";
|
|
try {
|
|
received = client.pop(txtHost.getText(),
|
|
Integer.valueOf(txtPort.getText()));
|
|
} catch (NumberFormatException e1) {
|
|
e1.printStackTrace();
|
|
} catch (IOException e2) {
|
|
e2.printStackTrace();
|
|
}
|
|
|
|
textPane.setText(textPane.getText() + "\n" + received);
|
|
}
|
|
});
|
|
btnPush.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
try {
|
|
String host = txtHost.getText();
|
|
int port = Integer.valueOf(txtPort.getText());
|
|
client.push(userinput.getText(), host, port);
|
|
} catch (IOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
|
|
JPanel panelResp = new JPanel();
|
|
contentPane.add(panelResp, BorderLayout.CENTER);
|
|
panelResp.setLayout(new BorderLayout(5, 5));
|
|
|
|
JLabel lblServerResponse = new JLabel("Server response:");
|
|
panelResp.add(lblServerResponse, BorderLayout.NORTH);
|
|
|
|
textPane = new JTextPane();
|
|
textPane.setEditable(false);
|
|
scrollPane = new JScrollPane(textPane);
|
|
panelResp.add(scrollPane, BorderLayout.CENTER);
|
|
}
|
|
}
|