001 package com.croftsoft.apps.agoracast.c2p; 002 003 import java.awt.event.*; 004 import java.io.*; 005 import javax.swing.*; 006 import javax.swing.table.*; 007 import java.util.*; 008 009 import com.croftsoft.core.gui.table.RowSortComparator; 010 import com.croftsoft.core.lang.NullArgumentException; 011 012 /********************************************************************* 013 * 014 * <p /> 015 * 016 * @version 017 * 2002-01-29 018 * @since 019 * 2001-07-31 020 * @author 021 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 022 *********************************************************************/ 023 024 public final class AgoracastTableModel 025 extends AbstractTableModel 026 ////////////////////////////////////////////////////////////////////// 027 ////////////////////////////////////////////////////////////////////// 028 { 029 030 // private final AgoracastMediator agoracastMediator; 031 032 private final String [ ] columnNames; 033 034 private final String [ ] columnNamesLowerCase; 035 036 private final AgoracastData [ ] agoracastDatas; 037 038 private final AgoracastComparator agoracastComparator; 039 040 private final int columnCount; 041 042 private final int rowCount; 043 044 private final boolean [ ] columnsReversed; 045 046 ////////////////////////////////////////////////////////////////////// 047 ////////////////////////////////////////////////////////////////////// 048 049 public AgoracastTableModel ( 050 AgoracastMediator agoracastMediator, 051 String category, 052 String [ ] columnNames ) 053 ////////////////////////////////////////////////////////////////////// 054 { 055 NullArgumentException.check ( agoracastMediator ); 056 057 NullArgumentException.check ( this.columnNames = columnNames ); 058 059 columnCount = columnNames.length; 060 061 columnNamesLowerCase = new String [ columnCount ]; 062 063 for ( int i = 0; i < columnCount; i++ ) 064 { 065 columnNamesLowerCase [ i ] = columnNames [ i ].toLowerCase ( ); 066 } 067 068 AgoracastDatabase agoracastDatabase 069 = agoracastMediator.getAgoracastDatabase ( ); 070 071 if ( category != null ) 072 { 073 agoracastDatas 074 = agoracastDatabase.getAgoracastDatasForCategory ( category ); 075 } 076 else 077 { 078 agoracastDatas = agoracastDatabase.getAgoracastDatas ( ); 079 } 080 081 rowCount = agoracastDatas.length; 082 083 agoracastComparator = new AgoracastComparator ( 084 agoracastMediator, "", false ); 085 086 columnsReversed = new boolean [ columnCount ]; 087 088 sort ( 0 ); 089 090 // agoracastDatabase.addEventObserver ( this ); 091 } 092 093 ////////////////////////////////////////////////////////////////////// 094 ////////////////////////////////////////////////////////////////////// 095 096 public int getColumnCount ( ) 097 ////////////////////////////////////////////////////////////////////// 098 { 099 return columnCount; 100 } 101 102 public String getColumnName ( int column ) 103 ////////////////////////////////////////////////////////////////////// 104 { 105 return columnNames [ column ]; 106 } 107 108 public int getRowCount ( ) 109 ////////////////////////////////////////////////////////////////////// 110 { 111 return rowCount; 112 } 113 114 public Object getValueAt ( int row, int column ) 115 ////////////////////////////////////////////////////////////////////// 116 { 117 return agoracastDatas [ row ] 118 .getValue ( columnNamesLowerCase [ column ] ); 119 } 120 121 public boolean isCellEditable ( 122 int row, 123 int column ) 124 ////////////////////////////////////////////////////////////////////// 125 { 126 return false; 127 } 128 129 ////////////////////////////////////////////////////////////////////// 130 ////////////////////////////////////////////////////////////////////// 131 132 public synchronized void sort ( int columnIndex ) 133 ////////////////////////////////////////////////////////////////////// 134 { 135 columnsReversed [ columnIndex ] = !columnsReversed [ columnIndex ]; 136 137 agoracastComparator.setReverse ( columnsReversed [ columnIndex ] ); 138 139 agoracastComparator.setSortField ( 140 columnNamesLowerCase [ columnIndex ] ); 141 142 Arrays.sort ( agoracastDatas, agoracastComparator ); 143 144 fireTableDataChanged ( ); 145 } 146 147 public synchronized AgoracastData getAgoracastData ( int tableRow ) 148 ////////////////////////////////////////////////////////////////////// 149 { 150 return agoracastDatas [ tableRow ]; 151 } 152 153 ////////////////////////////////////////////////////////////////////// 154 ////////////////////////////////////////////////////////////////////// 155 156 /* 157 public synchronized void observeEvent ( Object event ) 158 ////////////////////////////////////////////////////////////////////// 159 { 160 AgoracastEvent agoracastEvent = ( AgoracastEvent ) event; 161 162 if ( agoracastEvent.getType ( ) == AgoracastEvent.TYPE_ADD ) 163 { 164 String articleId = agoracastEvent.getArticleId ( ); 165 166 add ( agoracastDatabase.getAgoracastData ( articleId ) ); 167 } 168 } 169 */ 170 171 ////////////////////////////////////////////////////////////////////// 172 ////////////////////////////////////////////////////////////////////// 173 }