import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFileChooser; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JPopupMenu; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import java.io.File; import java.util.Vector; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; public class Table_Panel //extends //MouseAdapter { JPanel buttonpanel; // objects JPanel panel; JScrollPane scrollPane; static JTable table; String[] tag_names = { "Title", "Artist", "Album", "Release Year", "Comment" }; Object[][] data = { }; //popup JPopupMenu popup; JMenuItem fixall, tag, delete, selectall, clean; static int rowsSelected[]; static int rowsSelectedCount; // constructor public Table_Panel( ) { table = new JTable(new DefaultTableModel( data, tag_names) ){ public boolean isCellEditable(int rowIndex, int colIndex) { return false; //Disallow the editing of any cell } }; table.setCellSelectionEnabled(false); table.setRowSelectionAllowed(true); scrollPane = new JScrollPane( table ); panel = new JPanel( new BorderLayout() ); panel.add( scrollPane, BorderLayout.CENTER ); //pop up popup=new JPopupMenu(); fixall=new JMenuItem("Fix All"); tag = new JMenuItem("Fix Tag"); delete = new JMenuItem("Delete"); selectall = new JMenuItem("Select All"); clean = new JMenuItem("Clean"); popup.add(fixall); popup.add(tag); popup.add(delete); popup.add(selectall); popup.add(clean); fixall.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //TODO: fix all tag here for( MP3FILE file : Main_Frame.filevector){ try{ file.get_correct_tag(); //file.output_tags(); file.save_id3v1_tag(); //System.out.print("==="); file.save_id3v2_tag(); //System.out.print("==="); }catch( Exception E ){ E.printStackTrace(); } } int totalRows = table.getRowCount(); for ( int row = 0; row < totalRows; row++ ) update( row ); Main_Frame.clp.refresh(Main_Frame.clp.currentindex); } }); delete.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //TODO: delete tag here DefaultTableModel model = (DefaultTableModel) table.getModel(); for(int i=rowsSelectedCount-1;i>=0;i--){ model.removeRow(rowsSelected[i]); Main_Frame.filevector.removeElementAt(rowsSelected[i]); } System.out.println("delete"); } }); selectall.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //TODO: select all tag here DefaultTableModel model = (DefaultTableModel) table.getModel(); table.addRowSelectionInterval(0,model.getRowCount()-1); System.out.println("select all"); } }); clean.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //TODO: clean tag here DefaultTableModel model = (DefaultTableModel) table.getModel(); for(int i=model.getRowCount()-1;i>=0;i--){ model.removeRow(i); Main_Frame.filevector.removeElementAt(i); } System.out.println("clean"); } }); tag.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //TODO: fix tag here DefaultTableModel model = (DefaultTableModel) table.getModel(); MP3FILE temp; for(int i = 0 ; i < rowsSelectedCount ; i++){ temp = Main_Frame.filevector.get(rowsSelected[i]); try{ temp.get_correct_tag(); temp.save_id3v1_tag(); temp.save_id3v2_tag(); }catch( Exception E ){ E.printStackTrace(); } } } }); table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ @Override public void valueChanged(ListSelectionEvent e) { // TODO Auto-generated method stub ListSelectionModel model = (ListSelectionModel)e.getSource(); int index = model.getAnchorSelectionIndex(); Main_Frame.clp.refresh(index); } }); table.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { JTable source = (JTable)e.getSource(); rowsSelectedCount=source.getSelectedRowCount(); rowsSelected=new int[rowsSelectedCount]; rowsSelected=source.getSelectedRows(); Side_Panel.currentindex = rowsSelected[0]; if (e.isPopupTrigger()) { int row = source.rowAtPoint( e.getPoint() ); int column = source.columnAtPoint( e.getPoint() ); if (! source.isRowSelected(row)){ source.changeSelection(row, column, false, false); } popup.show(e.getComponent(), e.getX(), e.getY()); } } public void mouseReleased(MouseEvent e) { /* if (e.isPopupTrigger()) { JTable source = (JTable)e.getSource(); int row = source.rowAtPoint( e.getPoint() ); int column = source.columnAtPoint( e.getPoint() ); if (! source.isRowSelected(row)){ source.changeSelection(row, column, false, false); } popup.show(e.getComponent(), e.getX(), e.getY()); } */ } }); } //used to insert table content when new file is added public void insert(MP3FILE file) { DefaultTableModel model = (DefaultTableModel) table.getModel(); model.addRow(new Object[]{file.tag.title ,file.tag.artist, file.tag.album, file.tag.release_Date , ""}); } public void update ( int row ) { int column = 0; DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setValueAt( Main_Frame.filevector.get( row ).tag.title, row , column++ ); model.setValueAt( Main_Frame.filevector.get( row ).tag.artist, row , column++ ); model.setValueAt( Main_Frame.filevector.get( row ).tag.album, row , column++ ); model.setValueAt( Main_Frame.filevector.get( row ).tag.release_Date, row , column++ ); model.setValueAt( Main_Frame.filevector.get( row ).tag.comment, row , column++ ); } }