public void removeRelatedTableRow(DomainGlazedListTable relatedTable, DomainObject model) throws ObjectNotRemovedException { int selectedRow = relatedTable.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog( this, "You must select a row to remove.", "warning", JOptionPane.WARNING_MESSAGE); } else { int response = JOptionPane.showConfirmDialog( this, "Are you sure you want to delete " + relatedTable.getSelectedRows().length + " record(s)", "Delete records", JOptionPane.YES_NO_OPTION); if (response == JOptionPane.OK_OPTION) { ArrayList<DomainObject> relatedObjects = relatedTable.removeSelectedRows(); for (DomainObject relatedObject : relatedObjects) { model.removeRelatedObject(relatedObject); } int rowCount = relatedTable.getRowCount(); if (rowCount == 0) { // do nothing } else if (selectedRow >= rowCount) { relatedTable.setRowSelectionInterval(rowCount - 1, rowCount - 1); } else { relatedTable.setRowSelectionInterval(selectedRow, selectedRow); } // set record to dirty ApplicationFrame.getInstance().setRecordDirty(); } } }