FilteredTableNextRowProvider implements NextRowProvider { @Override public int getNextRow() { currentRow += increase; if (rowsChecked++ >= table.getRowCount()) { return -1; } if (currentRow >= table.getRowCount()) { currentRow = 0; } else if (currentRow < 0) { currentRow = table.getRowCount() - 1; } int convertRowIndexToModel = table.convertRowIndexToModel(currentRow); return convertRowIndexToModel; } FilteredTableNextRowProvider(JTable table, SearchDirection direction); @Override int getNextRow();  }
@Test public void testGetNextRowDown() { JTable jTable = new JTable(10, 1); NextRowProvider nextRowProvider = NextRowProviderFactory.getNextFilteredTableRow(jTable); for (int i = 0; i < 10; i++) { assertEquals(i, nextRowProvider.getNextRow()); } assertEquals(-1, nextRowProvider.getNextRow()); }
@Test public void testGetNextRowFromMiddleDown() { JTable jTable = new JTable(10, 1); jTable.getSelectionModel().setSelectionInterval(4, 4); NextRowProvider nextRowProvider = NextRowProviderFactory.getNextFilteredTableRow(jTable); for (int i = 5; i < 10; i++) { assertEquals(i, nextRowProvider.getNextRow()); } for (int i = 0; i < 5; i++) { assertEquals(i, nextRowProvider.getNextRow()); } assertEquals(-1, nextRowProvider.getNextRow()); }
@Test public void testGetNextRowUp() { JTable jTable = new JTable(10, 1); NextRowProvider nextRowProvider = NextRowProviderFactory.getPreviousFilteredTableRow(jTable); for (int i = 9; i >= 0; i--) { nextRowProvider.getNextRow(); } assertEquals(-1, nextRowProvider.getNextRow()); }
@Test public void testGetNextRowFromMiddleUp() { JTable jTable = new JTable(10, 1); jTable.getSelectionModel().setSelectionInterval(4, 4); NextRowProvider nextRowProvider = NextRowProviderFactory.getPreviousFilteredTableRow(jTable); for (int i = 3; i >= 0; i--) { assertEquals(i, nextRowProvider.getNextRow()); } for (int i = 9; i > 3; i--) { assertEquals(i, nextRowProvider.getNextRow()); } assertEquals(-1, nextRowProvider.getNextRow()); }
@Test public void testFilteredTable() { JTable jTable = new JTable(10, 1); TableRowSorter rowSorter = new TableRowSorter(jTable.getModel()); jTable.setRowSorter(rowSorter); RowFilter<TableModel, Integer> rowFilter = new RowFilter<TableModel, Integer>() { public boolean include(Entry<? extends TableModel, ? extends Integer> entry) { return entry.getIdentifier().intValue() % 2 == 0; } }; rowSorter.setRowFilter(rowFilter); NextRowProvider nextRowProvider = NextRowProviderFactory.getNextFilteredTableRow(jTable); for (int i = 0; i < 5; i++) { int nextRow = nextRowProvider.getNextRow(); assertEquals(i * 2, nextRow); } assertEquals(-1, nextRowProvider.getNextRow()); }