import java.awt.Button;
import java.awt.Color;
import java.awt.Component;
import java.awt.Event;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.TextField;
import javax.swing.DefaultListModel;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
/**
* simple AWT gui for the chat client
*/
public class Gui extends Frame implements ChatLineListener {
private static final long serialVersionUID = 1L;
protected DefaultListModel outputList;
protected TextField inputField;
private Client chatClient;
//<--CODING MUNGE HAT KEIN "OR" DESWEGEN BLEIBT ES DRIN!
//protected JComboBox coding1;
//protected JComboBox coding2;
//<--CODING
/**
* creates layout
*
* @param title
* title of the window
* @param chatClient
* chatClient that is used for sending and receiving messages
*/
public Gui(String title, Client chatClient) {
super(title);
System.out.println("starting gui...");
setLayout(new GridBagLayout());
outputList = new DefaultListModel();
JList list = new JList(outputList);
list.setCellRenderer(new TextMessageRenderer());
add(new JScrollPane(list), new GridBagConstraints(0,0,1,4,1.0,1.0,GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));
inputField = new TextField();
add(inputField, new GridBagConstraints(0,4,2,1,1.0,0,GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
// register listener so that we are informed whenever a new chat message
// is received (observer pattern)
chatClient.addLineListener(this);
this.chatClient = chatClient;
addGraphicalElements();
//-->CODING MUNGE HAT KEIN "OR" DESWEGEN BLEIBT ES DRIN!
//coding1 = new JComboBox(Utils.getCodingList());
//add(coding1, new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
//coding2 = new JComboBox(Utils.getCodingList());
//add(coding2, new GridBagConstraints(1,2,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
//<--CODING
pack();
setVisible(true);
inputField.requestFocus();
}
protected void addGraphicalElements() {
}
/**
* this method gets called every time a new message is received (observer
* pattern)
*/
public void newChatLine(TextMessage msg) {
outputList.addElement(msg);
}
/**
* handles AWT events (enter in textfield and closing window)
*/
public boolean handleEvent(Event e) {
if ((e.target == inputField) && (e.id == Event.ACTION_EVENT)) {
TextMessage txtMsg = new TextMessage((String) e.arg);
modifyTextMessage(txtMsg);
chatClient.send(txtMsg);
inputField.setText("");
return true;
}
else if ((e.target == this) && (e.id == Event.WINDOW_DESTROY)) {
if (chatClient != null)
chatClient.stop();
setVisible(false);
System.exit(0);
return true;
}
return super.handleEvent(e);
}
protected void modifyTextMessage(TextMessage txtMsg) {
//<--CODING MUNGE HAT KEIN "OR" DESWEGEN BLEIBT ES DRIN!
/*
String tmpEntry;
if (!(tmpEntry = coding1.getSelectedItem().toString()).equals(""))
txtMsg.addSetting(Utils.CODING1, tmpEntry);
if (!(tmpEntry = coding2.getSelectedItem().toString()).equals(""))
txtMsg.addSetting(Utils.CODING2, tmpEntry);
*/
//<--CODING
}
}