/*
* $Id$
*
* Copyright (c) 2000-2007 by Rodney Kinney
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License (LGPL) as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, copies are available
* at http://www.opensource.org.
*/
package VASSAL.chat.messageboard;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import VASSAL.i18n.Resources;
public class MessageViewer extends JPanel {
private static final long serialVersionUID = 1L;
private JTable msgTable;
private DefaultTableModel model;
private JTextArea msgText;
private List<Message> msgList = new ArrayList<Message>();
public MessageViewer() {
initComponents();
}
public void setMessages(Enumeration<Message> msgEnum) {
msgList.clear();
msgText.setText(""); //$NON-NLS-1$
Vector<Vector<String>> rows = new Vector<Vector<String>>();
Vector<String> names = new Vector<String>();
names.addElement(Resources.getString("Chat.sender")); //$NON-NLS-1$
names.addElement(Resources.getString("Chat.date")); //$NON-NLS-1$
while (msgEnum.hasMoreElements()) {
Message msg = msgEnum.nextElement();
msgList.add(msg);
Vector<String> cols = new Vector<String>();
cols.addElement(msg.getSender());
cols.addElement(Resources.formatDate(msg.getDate()));
rows.addElement(cols);
}
model = new DefaultTableModel(rows,names);
msgTable.setModel(model);
if (!msgList.isEmpty()) {
msgTable.getSelectionModel().setSelectionInterval(0,0);
}
}
private void initComponents() {
JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
model = new DefaultTableModel(new Object[]{Resources.getString("Chat.sender"),Resources.getString("Chat.date")},0); //$NON-NLS-1$ //$NON-NLS-2$
msgTable = new JTable(model);
msgTable.getSelectionModel().addListSelectionListener(new ShowMsgText());
JScrollPane scroll = new JScrollPane(msgTable);
split.add(scroll);
msgText = new JTextArea(10, 25);
msgText.setLineWrap(true);
msgText.setWrapStyleWord(true);
msgText.setEditable(false);
scroll = new JScrollPane(msgText);
scroll.setBorder(new TitledBorder(Resources.getString("Chat.message"))); //$NON-NLS-1$
split.add(scroll);
add(split);
}
private class ShowMsgText implements ListSelectionListener {
public void valueChanged(ListSelectionEvent evt) {
int index = msgTable.getSelectedRow();
if (index >= 0 && index < msgList.size()) {
msgText.setText(msgList.get(index).getText());
}
else {
msgText.setText(""); //$NON-NLS-1$
}
}
}
}