+ /**
+ * Select a column of checkboxes
+ * @param isDelete true for delete all, false for keep all
+ */
+ private void modifyAllCheckboxes(boolean isDelete)
+ {
+ for (int rowIndex=0; rowIndex<_infoList.getNumEntries(); rowIndex++)
+ {
+ _infoList.getDateInfo(rowIndex).setDeleteFlag(isDelete);
+ }
+ enableButtons();
+ }
+
+ private void changeSelectedRowsToKeep()
+ {
+ changeSelectedRows(false);
+ }
+ private void changeSelectedRowsToDelete()
+ {
+ changeSelectedRows(true);
+ }
+
+ /**
+ * Change the selected rows to either all keep or all delete
+ * @param isDelete true for delete, false for keep
+ */
+ private void changeSelectedRows(boolean isDelete)
+ {
+ int firstRow = -1, lastRow = -1;
+ for (int rowIndex : _infoTable.getSelectedRows())
+ {
+ if (firstRow == -1) {firstRow = rowIndex;}
+ _infoList.getDateInfo(rowIndex).setDeleteFlag(isDelete);
+ lastRow = rowIndex;
+ }
+ // Make sure all rows between first and last updated ones are updated in the table
+ ((AbstractTableModel) _infoTable.getModel()).fireTableRowsUpdated(firstRow, lastRow);
+ enableButtons();
+ }
+
+ /**
+ * Enable or disable the keepSelected and deleteSelected buttons
+ * according to the current selection
+ */
+ private void enableButtons()
+ {
+ boolean hasKeep = false, hasDelete = false;
+ for (int rowIndex : _infoTable.getSelectedRows())
+ {
+ if (_infoList.getDateInfo(rowIndex).getDeleteFlag()) {
+ hasDelete = true;
+ }
+ else {
+ hasKeep = true;
+ }
+ }
+ _delSelectedButton.setEnabled(hasKeep);
+ _keepSelectedButton.setEnabled(hasDelete);
+ }
+