package model.table; import java.util.ArrayList; import java.util.List; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; import model.audio.interfaces.IAudioFile; import model.util.FileUtil; public class ID3TagTableModel implements TableModel { /** * list of audio files */ private List<IAudioFile> audioFiles; /** * the column names */ private String[] col; /** * Constructor * * @param audioFiles * the audio files */ public ID3TagTableModel(List<IAudioFile> audioFiles) { if (audioFiles == null) this.audioFiles = new ArrayList<>(); else this.audioFiles = audioFiles; col = new String[17]; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#getColumnClass(int) */ @Override public Class<?> getColumnClass(int columnIndex) { if (columnIndex == 0) return Boolean.class; else return String.class; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#getColumnCount() */ @Override public int getColumnCount() { return 17; } /** * sets the colum names * * @param i * the index of the column * @param name * the column name */ public void setColumnName(int i, String name) { col[i] = name; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#getColumnName(int) */ @Override public String getColumnName(int columnIndex) { return col[columnIndex]; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#getRowCount() */ @Override public int getRowCount() { return audioFiles.size(); } // changed, filename, path, title, artist, album artist, album, year, track, // cd, genre, comment, composer, origArtist, copyright, url, encoded /* * (non-Javadoc) * * @see javax.swing.table.TableModel#getValueAt(int, int) */ @Override public Object getValueAt(int rowIndex, int columnIndex) { IAudioFile audioFile = this.audioFiles.get(rowIndex); switch (columnIndex) { case 0: return audioFile.hasChanged(); case 1: return FileUtil.getFileNameWithoutExtension(audioFile.getFilePath()); case 2: return FileUtil.getFilePath(audioFile.getFilePath()); case 3: return audioFile.getTitle(); case 4: return audioFile.getArtist(); case 5: return audioFile.getAlbumArtist(); case 6: return audioFile.getAlbum(); case 7: return audioFile.getYear(); case 8: return audioFile.getTrack(); case 9: return audioFile.getCD(); case 10: return audioFile.getGenreDescription(); case 11: return audioFile.getComment(); case 12: return audioFile.getComposer(); case 13: return audioFile.getOriginalArtist(); case 14: return audioFile.getCopyright(); case 15: return audioFile.getURL(); case 16: return audioFile.getEncoder(); } return null; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) */ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } /* * (non-Javadoc) * * @see * javax.swing.table.TableModel#removeTableModelListener(javax.swing.event * .TableModelListener) */ @Override public void removeTableModelListener(TableModelListener l) { } /* * (non-Javadoc) * * @see * javax.swing.table.TableModel#addTableModelListener(javax.swing.event. * TableModelListener) */ @Override public void addTableModelListener(TableModelListener l) { } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#isCellEditable(int, int) */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } }