/** * Comparator used prior to sorted columns. * @param primaryComparator {@link Comparator} to be used first * @return <code>this</code> */ public ObjectTableSorter setPrimaryComparator(Comparator<Row> primaryComparator) { invalidate(); this.primaryComparator = primaryComparator; return this; }
@Override public void allRowsChanged() { invalidate(); }
protected void rowsChanged(int firstRow, int endRow, boolean deleted, boolean inserted) { invalidate(); }
/** * Sets a fallback comparator (defaults to model index comparison) if none * {@link #getPrimaryComparator() primary}, neither * {@link #getValueComparator(int) column value comparators} can make * differences between two rows. * * @param comparator * to be used, when all other {@link Comparator}s can't see a * difference * @return <code>this</code> */ public ObjectTableSorter setFallbackComparator(Comparator<Row> comparator) { invalidate(); fallbackComparator = ObjectUtils.defaultIfNull(comparator, Comparator.comparingInt(Row::getIndex)); return this; }
public void setSortKey(SortKey sortkey) { if (Objects.equals(this.sortkey, sortkey)) { return; } invalidate(); if (sortkey != null) { int column = sortkey.getColumn(); if (valueComparators[column] == null) { throw new IllegalArgumentException( format("Can't sort column %s, it is mapped to type %s and this one have no natural order. So an explicit one must be specified", column, model.getColumnClass(column))); } } this.sortkey = sortkey; this.comparator = null; }
/** * Assign comparator to given column, if <code>null</code> a getDefaultComparator(int) default one is used instead. * @param column Model column index. * @param comparator Column value comparator. * @return <code>this</code> */ public ObjectTableSorter setValueComparator(int column, Comparator<?> comparator) { invalidate(); valueComparators[column] = ObjectUtils.defaultIfNull(comparator, getDefaultComparator(column)); return this; }