gvsu/cs654/proj1/KaZaGUI.java
josh c84d3e4b0b server accepting connections
git-svn-id: svn://anubis/gvsu@29 45c1a28c-8058-47b2-ae61-ca45b979098e
2008-03-08 18:29:47 +00:00

185 lines
6.5 KiB
Java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class KaZaGUI extends JFrame
{
private JButton m_browseButton;
private JButton m_connectButton;
private JButton m_closeButton;
private JTextField m_userNameField;
private JTextField m_shareFolderField;
private JTextField m_statusField;
private JTextField m_serverField;
private ActionEventHandler m_handler;
private JComboBox m_speedCombo;
KaZaClient m_client;
KaZaServer m_server;
public KaZaGUI()
{
super("Josh's KaZa application for CS654!");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600, 400);
setVisible(true);
m_handler = new ActionEventHandler(this);
Container c = getContentPane();
JTabbedPane pane = new JTabbedPane();
c.add(pane);
JPanel clientPanel = getClientPanel();
pane.add("Client", clientPanel);
JPanel transferPanel = getTransferPanel();
pane.add("Transfers", transferPanel);
JPanel serverPanel = getServerPanel();
pane.add("Server", serverPanel);
}
private class ActionEventHandler implements ActionListener
{
private KaZaGUI m_kg;
public ActionEventHandler(KaZaGUI kg)
{
m_kg = kg;
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == m_browseButton)
{
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.showOpenDialog(m_kg);
m_shareFolderField.setText(fc.getSelectedFile().getAbsolutePath());
}
else if (e.getSource() == m_closeButton)
{
System.exit(0);
}
else if (e.getSource() == m_connectButton)
{
ConnectionSpeed cs = (ConnectionSpeed) m_speedCombo.getSelectedItem();
m_client = new KaZaClient(m_userNameField.getText(),
cs.getKbps(),
m_shareFolderField.getText(),
m_serverField.getText());
}
}
}
private class ConnectionSpeed
{
private String m_caption;
private int m_kbps;
public ConnectionSpeed(String caption, int kbps)
{
m_caption = caption;
m_kbps = kbps;
}
public String toString() { return m_caption; }
public int getKbps() { return m_kbps; }
}
private JPanel getClientPanel()
{
m_shareFolderField = new JTextField();
m_browseButton = new JButton("...");
m_browseButton.addActionListener(m_handler);
m_serverField = new JTextField();
m_statusField = new JTextField();
m_connectButton = new JButton("Connect");
m_connectButton.addActionListener(m_handler);
m_closeButton = new JButton("Close");
m_closeButton.addActionListener(m_handler);
Vector<ConnectionSpeed> speeds = new Vector<ConnectionSpeed>();
speeds.add(new ConnectionSpeed("Modem", 50));
speeds.add(new ConnectionSpeed("768 Kbps", 768));
speeds.add(new ConnectionSpeed("1.5 Mbps", 1500));
speeds.add(new ConnectionSpeed("3 Mbps", 3000));
speeds.add(new ConnectionSpeed("6 Mbps", 6000));
speeds.add(new ConnectionSpeed("10 Mbps", 10000));
speeds.add(new ConnectionSpeed("45 Mbps", 45000));
speeds.add(new ConnectionSpeed("100 Mbps", 100000));
speeds.add(new ConnectionSpeed("1 Gbps", 1000000));
speeds.add(new ConnectionSpeed("10 Gbps", 10000000));
m_speedCombo = new JComboBox(speeds);
m_speedCombo.setSelectedIndex(3);
m_userNameField = new JTextField();
JPanel clientPanel = new JPanel();
clientPanel.setLayout(new BoxLayout(clientPanel, BoxLayout.Y_AXIS));
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(new JLabel("User name: "));
p.add(m_userNameField);
clientPanel.add(p);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(new JLabel("Connection speed: "));
p.add(m_speedCombo);
clientPanel.add(p);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(new JLabel("Shared folder: "));
p.add(m_shareFolderField);
p.add(m_browseButton);
clientPanel.add(p);
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(new JLabel("Server: "));
p.add(m_serverField);
clientPanel.add(p);
clientPanel.add(new Box.Filler(new Dimension(0, 0),
new Dimension(0, Short.MAX_VALUE),
new Dimension(Short.MAX_VALUE,
Short.MAX_VALUE)));
p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(m_statusField);
p.add(new Box.Filler(new Dimension(0, 0),
new Dimension(Short.MAX_VALUE, 0),
new Dimension(Short.MAX_VALUE, Short.MAX_VALUE)));
p.add(m_connectButton);
p.add(new Box.Filler(new Dimension(8, 0),
new Dimension(8, 0),
new Dimension(8, Short.MAX_VALUE)));
p.add(m_closeButton);
clientPanel.add(p);
return clientPanel;
}
private JPanel getTransferPanel()
{
JPanel transferPanel = new JPanel();
transferPanel.setLayout(new BoxLayout(transferPanel, BoxLayout.Y_AXIS));
transferPanel.add(new JLabel("Transfers:"));
transferPanel.add(new Box.Filler(new Dimension(0, 0),
new Dimension(0, Short.MAX_VALUE),
new Dimension(0, Short.MAX_VALUE)));
return transferPanel;
}
private JPanel getServerPanel()
{
JPanel serverPanel = new JPanel();
serverPanel.setLayout(new BoxLayout(serverPanel, BoxLayout.Y_AXIS));
serverPanel.add(new JLabel("Clients:"));
serverPanel.add(new Box.Filler(new Dimension(0, 0),
new Dimension(0, Short.MAX_VALUE),
new Dimension(0, Short.MAX_VALUE)));
return serverPanel;
}
}