package net.sf.colossus.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
import net.sf.colossus.common.Options;
import net.sf.colossus.guiutil.KFrame;
import net.sf.colossus.util.TimeFormats;
/**
* Log window for connection issues
* Based on simple log window
*
* @author David Ripton
* @author Clemens Katzer
*/
public class ConnectionLogWindow extends KFrame
{
private final static String CL_WINDOW_TITLE = "Connection Log Window";
private final JScrollPane scrollPane;
private final Options options;
private final Document document;
private final JTextArea textArea;
public ConnectionLogWindow(Options options)
{
super(CL_WINDOW_TITLE);
this.options = options;
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
ConnectionLogWindow.this.options.setOption(
Options.showConnectionLogWindow, false);
}
});
document = new PlainDocument();
this.textArea = new JTextArea(document);
textArea.setEditable(false);
textArea.setBackground(Color.white);
scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane);
setSize(getMinimumSize());
setPreferredSize(getMinimumSize());
useSaveWindow(options, CL_WINDOW_TITLE, null);
pack();
setVisible(true);
}
public static String getNow()
{
return new Date().toString();
}
public void append(String s)
{
String currentTime = TimeFormats.getCurrentTime24h();
textArea.append(currentTime + ": " + s + "\n");
toFront();
// XXX Removed because of graphical corruption
// scrollToEnd();
}
void scrollToEnd()
{
JScrollBar vert = scrollPane.getVerticalScrollBar();
vert.setValue(vert.getMaximum());
repaint();
}
@Override
public Dimension getMinimumSize()
{
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
return new Dimension(Math.min(d.width, 800), 200);
}
}