001 package log.swing; 002 003 import log.*; 004 005 import util.swing.*; 006 007 import java.util.*; 008 009 import java.io.*; 010 011 import data.Catalog; 012 013 /** 014 * Swing model for tables that can display log file contents. This model is static and cannot be changed. 015 * 016 * @see log.LogInputStream 017 * @see JLogTable 018 * @see DefaultLogEntryTED 019 * 020 * @author Steffen Zschaler 021 * @version 2.0 14/07/1999 022 * @since v2.0 023 */ 024 public class LogTableModel extends AbstractTableModel { 025 026 /** 027 * The LogEntries in the same order in which they appear in the table. 028 * 029 * @serial 030 */ 031 protected List m_lEntries; 032 033 /** 034 * Set the table's data. This actually has no effect here. 035 */ 036 public void setData(Object n_lModel) { 037 } 038 039 /** 040 * Create a new LogTableModel. Usually you do not create a new model directly, but rather instantiate a 041 * new {@link JLogTable}. 042 * 043 * @param lfc the LogFileContent that contains the LogEntries to be displayed. 044 * @param cmp a Comparator that defines the order the LogEntries appear in. May be <code>null</code> in 045 * which case LogEntries will be sorted by the {@link LogEntry#getLogDate log date}. 046 * @param ted a TableEntryDescriptor defining how LogEntries are to be displayed with respect to rows and 047 * columns in a table. 048 * 049 * @see DefaultLogEntryTED 050 */ 051 public LogTableModel(LogFileContent lfc, Comparator cmp, TableEntryDescriptor ted) { 052 super(ted); 053 054 m_lEntries = lfc.getContentList(); 055 056 if (cmp == null) { 057 cmp = new Comparator() { 058 public int compare(Object o1, Object o2) { 059 LogEntry le1 = (LogEntry)o1; 060 LogEntry le2 = (LogEntry)o2; 061 062 return le1.getLogDate().compareTo(le2.getLogDate()); 063 } 064 }; 065 } 066 067 Collections.sort(m_lEntries, cmp); 068 } 069 070 /** 071 * Return the LogEntry at row <code>nRow</code>. 072 */ 073 public Object getRecord(int nRow) { 074 if ((nRow >= 0) && (nRow < m_lEntries.size())) { 075 return m_lEntries.get(nRow); 076 } else { 077 return null; 078 } 079 } 080 081 /** 082 * Return the total amount of LogEntries in the model. 083 */ 084 public int getRowCount() { 085 return m_lEntries.size(); 086 } 087 }