diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java')
-rw-r--r-- | org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java index 9cde4c63a..6f8b810bc 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskComparator.java @@ -94,6 +94,9 @@ public class TaskComparator implements Comparator<ITask> { case TASK_TYPE: result = compare(element1.getTaskKind(), element2.getTaskKind(), key.getDirection()); break; + case DUE_DATE: + result = sortByDueDate(element1, element2, key.getDirection()); + break; default: // NONE return 0; } @@ -142,6 +145,17 @@ public class TaskComparator implements Comparator<ITask> { return sortDirection * date1.compareTo(date2); } + private int sortByDueDate(ITask element1, ITask element2, int sortDirection) { + Date date1 = element1.getDueDate(); + Date date2 = element2.getDueDate(); + if (date1 == null) { + return (date2 != null) ? sortDirection : 0; + } else if (date2 == null) { + return -sortDirection; + } + return sortDirection * date1.compareTo(date2); + } + private <T> int compare(Comparable<T> key1, T key2, int sortDirection) { if (key1 == null) { return (key2 != null) ? sortDirection : 0; |