package kg.apc.jmeter.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.TableCellEditor; import org.apache.jmeter.gui.util.PowerTableModel; public class DeleteRowAction implements ActionListener { private JTable grid; private PowerTableModel tableModel; private JButton deleteRowButton; private final JComponent sender; public DeleteRowAction(JComponent aSender, JTable grid, PowerTableModel tableModel, JButton deleteRowButton) { this.grid = grid; this.tableModel = tableModel; this.deleteRowButton = deleteRowButton; this.sender=aSender; } public void actionPerformed(ActionEvent e) { if (grid.isEditing()) { TableCellEditor cellEditor = grid.getCellEditor(grid.getEditingRow(), grid.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = grid.getSelectedRow(); if (rowSelected >= 0) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { deleteRowButton.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } grid.setRowSelectionInterval(rowToSelect, rowToSelect); } sender.updateUI(); } } }