Skip to content

Commit

Permalink
A lot of changes. Using AbsoluteLayout, fixed nick registration.
Browse files Browse the repository at this point in the history
  • Loading branch information
teamon committed Nov 23, 2010
1 parent 3f6d170 commit 4b9e947
Show file tree
Hide file tree
Showing 9 changed files with 142 additions and 102 deletions.
13 changes: 9 additions & 4 deletions src/main/java/eu/teamon/volley/Chat.java
Expand Up @@ -6,20 +6,25 @@ public class Chat {
private Client client;
private List<Message> messages;

public ChatPanel panel;
private ClientFrame frame;

public Chat(Client client){
public Chat(Client client, ClientFrame frame){
this.client = client;
this.frame = frame;
this.messages = new ArrayList<Message>();
}

public void addMessage(Message msg){
this.messages.add(msg);
this.panel.addMessage(msg);
this.frame.addChatMessage(msg);
}

public void clear(){
// TODO: Implement me
}

public void newMessage(String message){
this.client.sendMessage(Command.chatMessage(new Message(client.getPlayer(), message)));
this.client.sendMessage(Command.chatMessage(message));
}

}
50 changes: 0 additions & 50 deletions src/main/java/eu/teamon/volley/ChatPanel.java

This file was deleted.

21 changes: 17 additions & 4 deletions src/main/java/eu/teamon/volley/Client.java
Expand Up @@ -10,8 +10,15 @@ public class Client implements MessageListener {
private Map<String, Player> players;
private ConnectionThread connection;

public Client(String host, int port, Player player) throws IOException {
this.chat = new Chat(this);
public Client(){

}

public void setChat(Chat chat){
this.chat = chat;
}

public void connect(String host, int port, Player player) throws IOException {
this.player = player;
this.players = new HashMap<String, Player>();
this.players.put(player.getNick(), player);
Expand Down Expand Up @@ -69,13 +76,19 @@ public Player getPlayer(){
return this.player;
}

public void kill(){
public void disconnect(){
try {
this.connection.kill();
if(this.connection != null) this.connection.kill();
} catch (IOException e){
Logger.warn("Temporary silent fail");
} finally {
this.connection = null;
}
}

public boolean isConnected(){
return this.connection != null;
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
Expand Down
99 changes: 75 additions & 24 deletions src/main/java/eu/teamon/volley/ClientFrame.java
Expand Up @@ -3,30 +3,36 @@
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*;
import java.io.IOException;

import javax.swing.text.*;

/**
*
* @author teamon
*/
public class ClientFrame extends JFrame {
private class EmptyNickException extends Exception {}
// Settings
private JButton connectButton;
private JLabel portLabel;
private JTextField portTextField;
private JLabel hostLabel;
private JTextField hostTextField;
private JLabel nickLabel;
private JTextField nickTextField;
private ChatPanel chatPanel;

//Chat
private JTextField chatMessageInput;
private JTextArea chatTextArea;

private Client client;

private JPanel gamePanel;

public ClientFrame() {
setTitle("Volley Client");
setTitle("Volley Client");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(100, 100, 722, 474);
setBounds(100, 100, 764, 443);

JPanel pane = new JPanel();
pane.setBorder(new EmptyBorder(5, 5, 5, 5));
Expand All @@ -35,7 +41,7 @@ public ClientFrame() {

JPanel settingsPanel = new JPanel();
settingsPanel.setBorder(new TitledBorder(null, "Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null));
settingsPanel.setBounds(406, 6, 310, 139);
settingsPanel.setBounds(448, 6, 310, 139);
settingsPanel.setLayout(null);
pane.add(settingsPanel);

Expand All @@ -47,7 +53,7 @@ public ClientFrame() {

portTextField = new JTextField();
portTextField.setBounds(90, 44, 213, 28);
portTextField.setText("7777");
portTextField.setText(Integer.toString(Server.DEFAULT_PORT));
settingsPanel.add(portTextField);

// host
Expand All @@ -74,21 +80,62 @@ public ClientFrame() {
connectButton = new JButton("Connect");
connectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if(client.isConnected()) disconnect();
else connect();
}
});
connectButton.setBounds(100, 104, 117, 29);
settingsPanel.add(connectButton);


pane.add(settingsPanel); // TODO: Extract settingsPanel into separate class
pane.add(new GamePanel());
//pane.add(new GamePanel());

// Chat
JPanel chatPanel = new JPanel();
chatPanel.setBorder(new TitledBorder(null, "Chat", TitledBorder.LEADING, TitledBorder.TOP, null, null));
chatPanel.setBounds(448, 158, 310, 258);
chatPanel.setLayout(null);

chatMessageInput = new JTextField();
chatMessageInput.setBounds(6, 225, 298, 28);
chatMessageInput.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String msg = chatMessageInput.getText();
if(!msg.equals("")) {
client.getChat().newMessage(chatMessageInput.getText());
chatMessageInput.setText("");
}
}
});

JScrollPane scrollPane = new JScrollPane();
scrollPane.setLocation(6, 19);
scrollPane.setSize(298, 203);


chatPanel.add(chatMessageInput);
chatPanel.add(scrollPane);

// pack();
chatTextArea = new JTextArea();
scrollPane.setViewportView(chatTextArea);
chatTextArea.setEditable(false);
chatTextArea.setLineWrap(true);
((DefaultCaret)chatTextArea.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
pane.add(chatPanel);

gamePanel = new GamePanel();
gamePanel.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
gamePanel.setBounds(6, 6, 430, 410);
pane.add(gamePanel);

client = new Client();
client.setChat(new Chat(client, this));
}

public void addChatMessage(Message message){
chatTextArea.append(String.format("<%s> %s\n", message.getAuthor().getNick(), message.getContent()));
}

public Client getClient(){
return this.client;
Expand All @@ -100,41 +147,45 @@ protected void connect(){
int port = Integer.parseInt(portTextField.getText());
String host = hostTextField.getText();
String nick = nickTextField.getText();
client = new Client(host, port, new Player(nick));
if(nick.equals("")){
throw new EmptyNickException();
}
client.connect(host, port, new Player(nick));
Logger.debug("Client connected");

// Disable settings
portTextField.setEnabled(false);
hostTextField.setEnabled(false);
nickTextField.setEnabled(false);
connectButton.setText("Disconnect");

// Enable chat
chatTextArea.setEnabled(true);
chatMessageInput.setEnabled(true);

chatPanel = new ChatPanel(this.client.getChat());
getContentPane().add(chatPanel);
pack();

} catch (EmptyNickException e){
showError("Nick can't be empty");
} catch (IOException e){
Logger.error(e.getMessage());
showError("Something bad " + e.getMessage());
}
}

protected void disconnect(){
client.kill();
client = null;
client.disconnect();

// enable settings
portTextField.setEnabled(true);
hostTextField.setEnabled(true);
nickTextField.setEnabled(true);
connectButton.setText("Connect");

if(chatPanel != null){
getContentPane().remove(chatPanel);
chatPanel = null;
pack();
}

// disable chat
chatTextArea.setEnabled(false);
chatMessageInput.setEnabled(false);
}

protected void showError(String message){
JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE);
}

}
8 changes: 8 additions & 0 deletions src/main/java/eu/teamon/volley/Command.java
Expand Up @@ -8,4 +8,12 @@ public static String newPlayerRegistered(Player player){
public static String chatMessage(Message message){
return "c " + message.getAuthor().getNick() + " " + message.getContent();
}

public static String chatMessage(Player player, String message){
return "c " + player.getNick() + " " + message;
}

public static String chatMessage(String message){
return "c " + message;
}
}
6 changes: 3 additions & 3 deletions src/main/java/eu/teamon/volley/ConnectionThread.java
Expand Up @@ -28,6 +28,7 @@ public void run() {

String inputLine;
while(keep && (inputLine = in.readLine()) != null){
Logger.debug("ConnectionThread: " + inputLine);
listener.processMessage(this, inputLine);
}

Expand All @@ -37,9 +38,8 @@ public void run() {
}

public void sendMessage(String message){
if(out != null){
out.println(message);
}
while(out == null);
out.println(message);
}

public void kill() throws IOException {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/eu/teamon/volley/GamePanel.java
@@ -1,13 +1,12 @@
package eu.teamon.volley;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JPanel;

public class GamePanel extends JPanel {

public GamePanel(){
setSize(300, 300);
setSize(430, 410);
}

public void paintComponent(Graphics g){
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/eu/teamon/volley/Player.java
Expand Up @@ -3,10 +3,18 @@
public class Player {
private String nick;

public Player(){
this("");
}

public Player(String nick){
this.nick = nick;
}

public void setNick(String nick){
this.nick = nick;
}

public String getNick(){
Logger.debug("getNick " + this.nick);
return this.nick;
Expand Down

0 comments on commit 4b9e947

Please sign in to comment.