package vooga.rts.networking.examplechat;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
/**
* Creates a panel that communicates with an IChatModel.
*
* @author David Winegar
*
*/
public class ChatPanel extends JPanel {
private static final String EMPTY_STRING = "";
private static final long serialVersionUID = -9126798689207961507L;
private JTextArea myTextArea;
private JTextField myInputArea;
private IChatModel myModel;
/**
* Sets the model and instanitates state.
*
* @param model to set
*/
public ChatPanel (IChatModel model) {
myModel = model;
setLayout(new BorderLayout(0, 0));
createChatPane();
createOutputPane();
}
/**
* Writes a message to the text area.
*
* @param message to write
*/
public void appendMessage (String message) {
myTextArea.append(message);
}
private void createOutputPane () {
myTextArea = new JTextArea();
myTextArea.setEditable(false);
JScrollPane pane = new JScrollPane(myTextArea);
pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
add(pane, BorderLayout.CENTER);
}
private void createChatPane () {
myInputArea = new JTextField();
myInputArea.addActionListener(new ActionListener() {
@Override
public void actionPerformed (ActionEvent arg0) {
myModel.messageEntered(myInputArea.getText());
myInputArea.setText(EMPTY_STRING);
}
});
add(myInputArea, BorderLayout.SOUTH);
}
}