@Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); label.setText(highlightFilterText(filterText, label.getText())); return label; }
@Override protected void textChanged(DocumentEvent e) { sorter.allRowsChanged(); filterRenderer.setFilterText(filterTextField.getText()); } });
@Before public void setUp() { renderer = new FilteredTextTableCellRenderer(); }
projectListTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); projectListTable.getSelectionModel().addListSelectionListener(e -> validateProjectSelection()); FilteredTextTableCellRenderer filterRenderer = new FilteredTextTableCellRenderer(); projectListTable.setDefaultRenderer(Object.class, filterRenderer);
@Test public void accepts_emptyInputs() { String result = renderer.highlightFilterText("", ""); assertThat(result).isEmpty(); }
@Test public void accepts_nullInputs() { String result = renderer.highlightFilterText(null, null); assertThat(result).isNull(); }
@Test public void emptyFilter_doesNotChangeText() { String result = renderer.highlightFilterText("", SAMPLE_TEXT); assertThat(result).isEqualTo(SAMPLE_TEXT); }
@Test public void highlights_matchingText() { String result = renderer.highlightFilterText("project", SAMPLE_TEXT); String expected = "<html>your <b>project</b> name and <b>PROJECT</b> id."; assertThat(result).isEqualTo(expected); }
@Test public void highlights_matchingText_atStart() { String result = renderer.highlightFilterText("you", SAMPLE_TEXT); String expected = "<html><b>you</b>r project name and PROJECT id."; assertThat(result).isEqualTo(expected); }
@Test public void highlights_matchingText_atEnd() { String result = renderer.highlightFilterText("id.", SAMPLE_TEXT); String expected = "<html>your project name and PROJECT <b>id.</b>"; assertThat(result).isEqualTo(expected); } }