- There is a standard Comparator for reversing Comparables, so let's use

that everywhere; deprecated Comparators.REVERSE_COMPARABLE.
- Added a note that the ReversingComparator is old news, too, but we're not
  ready to go 1.5 everywhere...
- Added Comparators.LEXICAL_CASE_INSENSITIVE which treats all sorted
  objects as Strings that are sorted case insensitively.
- Have TableSorter use standard Comparators.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@1733 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
ray
2005-11-11 01:17:56 +00:00
parent a2925e8ab6
commit 07800d1662
4 changed files with 38 additions and 20 deletions
@@ -13,6 +13,8 @@ import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
import com.samskivert.util.Comparators;
/**
* TableSorter is a decorator for TableModels; adding sorting
* functionality to a supplied TableModel. TableSorter does
@@ -75,17 +77,6 @@ public class TableSorter extends AbstractTableModel {
private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
public static final Comparator COMPARABLE_COMAPRATOR = new Comparator() {
public int compare(Object o1, Object o2) {
return ((Comparable) o1).compareTo(o2);
}
};
public static final Comparator LEXICAL_COMPARATOR = new Comparator() {
public int compare(Object o1, Object o2) {
return o1.toString().compareTo(o2.toString());
}
};
public static JTable createSortedTable (TableModel model)
{
TableSorter sorter = new TableSorter(model);
@@ -227,9 +218,9 @@ public class TableSorter extends AbstractTableModel {
return comparator;
}
if (Comparable.class.isAssignableFrom(columnType)) {
return COMPARABLE_COMAPRATOR;
return Comparators.COMPARABLE;
}
return LEXICAL_COMPARATOR;
return Comparators.LEXICAL_CASE_INSENSITIVE;
}
private Row[] getViewToModel() {
@@ -30,6 +30,8 @@ public class Comparators
/**
* A comparator that can be used to reverse the results of another
* comparator.
* TODO: deprecate this when we more globally move to 1.5:
* @use java.util.Collections.reverseOrder(Comparator c);
*/
public static class ReversingComparator implements Comparator
{
@@ -49,24 +51,49 @@ public class Comparators
/**
* A comparator that compares {@link Comparable} instances.
* Can you believe this isn't defined somewhere in the standard
* java libraries?
*/
public static final Comparator COMPARABLE = new Comparator() {
public int compare (Object o1, Object o2)
{
if (o1 == o2) {
if (o1 == o2) { // catches null == null
return 0;
}
if (o1 == null) {
} else if (o1 == null) {
return 1;
} else if (o2 == null) {
return -1;
}
return ((Comparable)o1).compareTo(o2);
return ((Comparable)o1).compareTo(o2); // null-free
}
};
/**
* A comparator that compares the toString() value of all objects
* case insensitively.
*/
public static final Comparator LEXICAL_CASE_INSENSITIVE = new Comparator() {
public int compare (Object o1, Object o2)
{
if (o1 == o2) { // catches null == null
return 0;
} else if (o1 == null) {
return 1;
} else if (o2 == null) {
return -1;
}
// now that we've filtered all nulls, compare the toString()s
return String.CASE_INSENSITIVE_ORDER.compare(
o1.toString(), o2.toString());
}
};
/**
* A comparator that imposes a reverse ordering on {@link Comparable}
* instances.
*
* @deprecated use java.util.Collections.reverseOrder()
*/
public static final Comparator REVERSE_COMPARABLE =
new ReversingComparator(COMPARABLE);
java.util.Collections.reverseOrder();
}
@@ -352,7 +352,7 @@ public class QuickSort
*/
public static void rsort (ArrayList a)
{
sort(a, Comparators.REVERSE_COMPARABLE);
sort(a, java.util.Collections.reverseOrder());
}
/**
@@ -61,7 +61,7 @@ public class SortableArrayList extends AbstractList
*/
public void rsort ()
{
sort(Comparators.REVERSE_COMPARABLE);
sort(java.util.Collections.reverseOrder());
}
/**