@Override public void selectionChanged(final SelectionEvent<T> event) { if (this.objectSelectionModel.isEmpty() && this.tableSelectionModel.isSelectionEmpty()) { return; } if (this.objectSelectionModel.isEmpty()) { this.tableSelectionModel.clearSelection(); return; } final List<T> objects = getObjects(this.listModel, this.tableSelectionModel); final List<T> selectedObjects = IterableUtilities.asList(this.objectSelectionModel.getSelectedObjects()); if (objects.size() == this.objectSelectionModel.size() && objects.containsAll(selectedObjects)) { return; } GuiUtilities.invokeLater(() -> { this.tableSelectionModel.setValueIsAdjusting(true); this.tableSelectionModel.clearSelection(); final int[] indexes = this.listModel.getIndicesOf(selectedObjects); for (final int index : indexes) { try { this.tableSelectionModel.addSelectionInterval(index, index); } catch (final NullPointerException exception) { logger.log(ILevel.ERROR, exception.getMessage(), exception); } } this.tableSelectionModel.setValueIsAdjusting(false); }); }
@Override public void selectionChanged(final SelectionEvent<T> event) { if (this.objectSelectionModel.isEmpty() && this.tableSelectionModel.isSelectionEmpty()) { return; } if (this.objectSelectionModel.isEmpty()) { this.tableSelectionModel.clearSelection(); return; } final List<T> objects = getObjects(this.tableModel, this.tableSelectionModel); final List<T> selectedObjects = IterableUtilities.asList(this.objectSelectionModel.getSelectedObjects()); if (objects.size() == this.objectSelectionModel.size() && objects.containsAll(selectedObjects)) { return; } this.tableSelectionModel.setValueIsAdjusting(true); this.tableSelectionModel.clearSelection(); final int[] indexes = this.tableModel.indices(selectedObjects); for (final int index : indexes) { final int row = this.sortedRowMapper.getSortedRow(index); this.tableSelectionModel.addSelectionInterval(row, row); } this.tableSelectionModel.setValueIsAdjusting(false); }