package gui; import java.net.MalformedURLException; import java.net.URL; import java.util.Vector; import javax.swing.table.DefaultTableModel; public class SongTableModel extends DefaultTableModel implements Reorderable { /** * */ private static final long serialVersionUID = -5840979978104811246L; public SongTableModel() { super(); } public String getArtistForRow(int row) { return (String)getValueAt(row, 1); } public String getSongTitleForRow(int row) { return (String)getValueAt(row, 2); } public String getAlbumNameForRow(int row) { return (String)getValueAt(row, 3); } public int getTrackNumberForRow(int row) { return parseInt((String)getValueAt(row, 4)); } public int getYearForRow(int row) { return parseInt((String)getValueAt(row, 5)); } @Override public boolean isCellEditable(int row, int column) { return false; } public void addRow(String artist, String title, String album, String trackNr, String year, String url) { super.addRow(new String[] {"", artist, title, album, trackNr, year, url}); } private int parseInt(String string) { try { return Integer.parseInt(string); } catch (Exception e) { return 0; } } public void setNowPlaying(int row, boolean value) { if(value) setValueAt("\u25B6", row, 0); else setValueAt("", row, 0); } @Override public void reorder(int fromIndex, int toIndex) { String[] row = xRemoveRow(fromIndex); int index = toIndex; if(index > fromIndex) index--; insertRow(index, row); } private String[] xRemoveRow(int row) { String[] rowData = new String[10]; @SuppressWarnings({ "unchecked", "rawtypes" }) Vector<Object> rawRowData = (Vector)getDataVector().get(row); for(int i = 0; i < 10; i++) rowData[i] = (String)rawRowData.get(i); removeRow(row); return rowData; } public URL getURL(int row) throws MalformedURLException { return new URL((String) getValueAt(row, 6)); } }