001 package log.swing;
002
003 import log.*;
004 import java.io.*;
005 import util.swing.*;
006
007 import java.util.*;
008
009 import java.text.*;
010
011 import javax.swing.*;
012 import javax.swing.table.*;
013
014 /**
015 * A JTable that can display log file contents.
016 *
017 * <p>The contents of the table is read at creation time and does not change, even if the log file contents
018 * change.</p>
019 *
020 * @author Steffen Zschaler
021 * @version 2.0 14/07/1999
022 * @since v2.0
023 */
024 public class JLogTable extends JAbstractTable {
025
026 /**
027 * A TableCellRenderer that takes a Date and prints it with the standard date and time format for the
028 * default locale.
029 */
030 public static final TableCellRenderer DATE_TIME_CELL_RENDERER = new
031 DefaultTableCellRenderer() {
032 private final DateFormat s_dfFormatter = DateFormat.getDateTimeInstance();
033
034 {
035 setHorizontalAlignment(RIGHT);
036 }
037
038 public java.awt.Component getTableCellRendererComponent(JTable table,
039 Object value,
040 boolean isSelected, boolean hasFocus, int row, int column) {
041 super.getTableCellRendererComponent(table, value, isSelected,
042 hasFocus, row, column);
043
044 setText(s_dfFormatter.format((Date)value));
045
046 return this;
047 }
048 };
049
050 /**
051 * Create a new JLogTable. LogEntries are ordered by their log dates and displayed using the
052 * {@link DefaultLogEntryTED}.
053 *
054 * @param lis the LogInputStream that contains the LogEntries to be displayed. May be filtered.
055 */
056 public JLogTable(LogFileContent lfc) {
057 this(lfc, null, new DefaultLogEntryTED());
058 }
059
060 /**
061 * Create a new JLogTable. LogEntries are ordered by their log dates.
062 *
063 * @param lis the LogInputStream that contains the LogEntries to be displayed. May be filtered.
064 * @param ted a TableEntryDescriptor defining how LogEntries are to be displayed with respect to rows and
065 * columns in a table.
066 */
067 public JLogTable(LogFileContent lfc, TableEntryDescriptor ted) {
068 this(lfc, null, ted);
069 }
070
071 /**
072 * Create a new JLogTable. LogEntries are displayed using the {@link DefaultLogEntryTED}.
073 *
074 * @param lis the LogInputStream that contains the LogEntries to be displayed. May be filtered.
075 * @param cmp a Comparator that defines the order the LogEntries appear in. May be <code>null</code> in
076 * which case LogEntries will be sorted by the {@link LogEntry#getLogDate log date}.
077 */
078 public JLogTable(LogFileContent lfc, Comparator cmp) {
079 this(lfc, cmp, new DefaultLogEntryTED());
080 }
081
082 /**
083 * Create a new JLogTable.
084 *
085 * @param lis the LogInputStream that contains the LogEntries to be displayed. May be filtered.
086 * @param cmp a Comparator that defines the order the LogEntries appear in. May be <code>null</code> in
087 * which case LogEntries will be sorted by the {@link LogEntry#getLogDate log date}.
088 * @param ted a TableEntryDescriptor defining how LogEntries are to be displayed with respect to rows and
089 * columns in a table.
090 */
091 public JLogTable(LogFileContent lfc, Comparator cmp,
092 TableEntryDescriptor ted) {
093 super(new LogTableModel(lfc, cmp, ted));
094 setDefaultRenderer(Date.class, DATE_TIME_CELL_RENDERER);
095 }
096 }