package org.wildstang.wildrank.desktop.utils;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class Logger {
private static final int MAX_ARRAY_SIZE = 100;
private static Logger instance;
private JFrame frame;
private JTextArea log;
private JScrollPane scrollpane;
private boolean printToSystem = true;
private List<String> messages = new ArrayList<String>();
public static Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
private Logger() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame = new JFrame("Log");
log = new JTextArea(MAX_ARRAY_SIZE, 1);
log.setEditable(false);
scrollpane = new JScrollPane(log);
frame.setSize(new Dimension(300, 500));
frame.setResizable(true);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(scrollpane, BorderLayout.CENTER);
frame.setLocation(new Point(100, 100));
frame.setVisible(true);
}
});
}
public void printToSystem(boolean print) {
printToSystem = print;
}
public void log(String message) {
// We store logs in an ArrayList instead of writing them straight to the
// JTextArea so that we aren't trying to write to the JTextArea before it is created
messages.add(message + "\n");
if (log != null) {
for (String string : messages) {
log.append(string);
}
while(messages.size() > 0) {
messages.remove(messages.size() - 1);
}
}
if (printToSystem) {
System.out.println(message);
}
}
public void log(int message) {
log("" + message);
}
public void log(double message) {
log("" + message);
}
public void log(Object message) {
log(message.toString());
}
}