@SuppressWarnings("unchecked") public List<? extends SortKey> getSortKeys() { Sorter sorter = getSorter(); if (sorter == null) { return Collections.EMPTY_LIST; } return Collections.singletonList(sorter.getSortKey()); }
/** * Returns the filter after the supplied filter in this pipeline, or null, * if there aren't any filters after the supplied filter. * * @param filter a filter in this pipeline * @return the filter after the supplied filter in this pipeline, or null, * if there aren't any filters after the supplied filter */ Filter next(Filter filter) { if (last().equals(filter)) return null; return filter.order + 1 < filters.length ? filters[filter.order + 1] : getSorter(); }
public SortOrder getSortOrder(int column) { Sorter sorter = getSorter(); if ((sorter == null) || (sorter.getColumnIndex() != column)) { return SortOrder.UNSORTED; } return sorter.getSortOrder(); }
public void toggleSortOrder(int column, Comparator comparator) { Sorter currentSorter = getSorter(); if ((currentSorter != null) && (currentSorter.getColumnIndex() == column)) { // JW: think about logic - need to update comparator? currentSorter.toggle(); } else { setSorter(createDefaultSorter(new SortKey(SortOrder.ASCENDING, column, comparator))); } }
public void setSortKeys(List<? extends SortKey> keys) { if ((keys == null) || keys.isEmpty()) { setSorter(null); return; } SortKey sortKey = SortKey.getFirstSortingKey(keys); // only crappy unsorted... if (sortKey == null) return; Sorter sorter = getSorter(); if (sorter == null) { sorter = createDefaultSorter(); } sorter.setSortKey(sortKey); // technically, we could re-use the sorter // and only reset column, comparator and direction // need to detangle from TableColumn before going there... // so for now we only change the order if we have a sorter // for the given column, create a new default sorter if not // if ((currentSorter == null) || // (currentSorter.getColumnIndex() != sortKey.getColumn())) { // currentSorter = createDefaultSorter(sortKey); // } // if (currentSorter.isAscending() != sortKey.getSortOrder().isAscending()) { // currentSorter.setAscending(sortKey.getSortOrder().isAscending()); // } setSorter(sorter); }
/** * Sets the sorter that the output of the filter pipeline is piped through. * This is the sorter that is installed interactively on a view by a user * action. * * This method is responsible for doing all the bookkeeping to assign/cleanup * pipeline/adapter assignments. * * @param sorter the interactive sorter, if any; null otherwise. */ protected void setSorter(Sorter sorter) { Sorter oldSorter = getSorter(); if (oldSorter == sorter) return; if (oldSorter != null) { oldSorter.assign((FilterPipeline) null); } this.sorter = sorter; if (sorter != null) { sorter.assign((FilterPipeline) null); sorter.assign(this); if (adapter != null) { sorter.assign(adapter); sorter.refresh(); } } if ((sorter == null) && isAssigned()) { fireContentsChanged(); } }