diff options
6 files changed, 47 insertions, 77 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/DateRange.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/DateRange.java index a126d14b9..6a505a2e9 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/DateRange.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/DateRange.java @@ -142,7 +142,7 @@ public class DateRange implements Comparable<DateRange> { return TaskActivityUtil.getCurrentWeek().next().compareTo(this) == 0; } - private boolean isThisWeek() { + public boolean isThisWeek() { if (isWeek()) { return this.includes(Calendar.getInstance()); } @@ -170,6 +170,10 @@ public class DateRange implements Comparable<DateRange> { return getEndDate().compareTo(Calendar.getInstance()) < 0; } + public boolean isBefore(DateRange scheduledDate) { + return this.getEndDate().compareTo(scheduledDate.getStartDate()) < 0; + } + @Override public int hashCode() { final int prime = 31; diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java index d2b06124b..df69805aa 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java @@ -591,7 +591,8 @@ public class TaskActivityManager implements ITaskActivityManager { } public boolean isPastReminder(AbstractTask task) { - if (task == null || task.isCompleted() || task.getScheduledForDate() == null) { + if (task == null || task.isCompleted() || task.getScheduledForDate() == null + || !task.getScheduledForDate().isDay()) { return false; } else { return isPastReminder(task.getScheduledForDate(), task.isCompleted()); diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java index dd701d620..3eb112555 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java @@ -8,12 +8,19 @@ package org.eclipse.mylyn.tasks.tests; +import java.util.Calendar; + import junit.framework.TestCase; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.mylyn.internal.tasks.core.DateRange; import org.eclipse.mylyn.internal.tasks.core.LocalTask; +import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; import org.eclipse.mylyn.internal.tasks.core.TaskCategory; +import org.eclipse.mylyn.internal.tasks.core.WeekDateRange; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; +import org.eclipse.mylyn.internal.tasks.ui.views.TaskListInterestSorter; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.ITask; @@ -69,6 +76,29 @@ public class TableSorterTest extends TestCase { } } + public void testScheduledTaskSorting() { + final TaskListInterestSorter sorter = new TaskListInterestSorter(); + MockTask task1 = new MockTask("local", "MYLN:1", "1"); + MockTask task2 = new MockTask("local", "MYLN:2", "2"); + + Calendar start1 = TaskActivityUtil.getCalendar(); + start1.add(Calendar.WEEK_OF_YEAR, -1); + TaskActivityUtil.snapStartOfWorkWeek(start1); + Calendar end1 = TaskActivityUtil.getCalendar(); + end1.setTimeInMillis(start1.getTimeInMillis()); + TaskActivityUtil.snapEndOfWeek(end1); + WeekDateRange range1 = new WeekDateRange(start1, end1); + TasksUiPlugin.getTaskActivityManager().setScheduledFor(task1, range1); + + Calendar start2 = TaskActivityUtil.getCalendar(); + start2.add(Calendar.HOUR_OF_DAY, -1); + Calendar end2 = TaskActivityUtil.getCalendar(); + DateRange range2 = new DateRange(start2, end2); + TasksUiPlugin.getTaskActivityManager().setScheduledFor(task2, range2); + + assertTrue(sorter.compare(new EmptyViewer(), task1, task2) < 0); + } + public void testSummaryOrderSorting() { final TaskListTableSorter sorter = new TaskListTableSorter(TaskListView.getFromActivePerspective()); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduleTaskMenuContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduleTaskMenuContributor.java index c3fa311f3..2c97f591a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduleTaskMenuContributor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduleTaskMenuContributor.java @@ -86,8 +86,7 @@ public class ScheduleTaskMenuContributor implements IDynamicSubMenuContributor { Action action = createDateSelectionAction(day, CommonImages.SCHEDULE_DAY); subMenuManager.add(action); // Special case: Over scheduled tasks always 'scheduled' for today - if (singleTaskSelection != null && day.equals(singleTaskSelection.getScheduledForDate()) - && isPastReminder(singleTaskSelection)) { + if (singleTaskSelection != null && isPastReminder(singleTaskSelection)) { action.setChecked(true); } } else if (day.after(TaskActivityUtil.getCalendar())) { @@ -112,6 +111,12 @@ public class ScheduleTaskMenuContributor implements IDynamicSubMenuContributor { // This Week Action action = createDateSelectionAction(week, CommonImages.SCHEDULE_WEEK); subMenuManager.add(action); + // Special case: This Week holds previous weeks' scheduled tasks + if (singleTaskSelection != null && singleTaskSelection.getScheduledForDate().isWeek() + && singleTaskSelection.getScheduledForDate().isBefore(week)) { + // Tasks scheduled for 'someday' float into this week + action.setChecked(true); + } // Next Week action = createDateSelectionAction(week.next(), null); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListInterestSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListInterestSorter.java index 1e7ef091c..d1d12709b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListInterestSorter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListInterestSorter.java @@ -35,25 +35,10 @@ public class TaskListInterestSorter extends ViewerSorter { } else if (o2 instanceof ITaskContainer && o1 instanceof UnmatchedTaskContainer) { return 1; } -// -// if (o1 instanceof ScheduledTaskContainer && o2 instanceof ScheduledTaskContainer) { -// ScheduledTaskContainer dateRangeTaskContainer1 = (ScheduledTaskContainer) o1; -// ScheduledTaskContainer dateRangeTaskContainer2 = (ScheduledTaskContainer) o2; -// if (dateRangeTaskContainer1.getDateRange().compareTo(dateRangeTaskContainer2.getDateRange())getisCaptureFloating() && !dateRangeTaskContainer2.isCaptureFloating()) { -// return 1; -// } else if (!dateRangeTaskContainer1.isCaptureFloating() && dateRangeTaskContainer2.isCaptureFloating()) { -// return -1; -// } -// return -1 * dateRangeTaskContainer2.getStart().compareTo(dateRangeTaskContainer1.getStart()); if (o1 instanceof ScheduledTaskContainer && o2 instanceof ScheduledTaskContainer) { ScheduledTaskContainer dateRangeTaskContainer1 = (ScheduledTaskContainer) o1; ScheduledTaskContainer dateRangeTaskContainer2 = (ScheduledTaskContainer) o2; return dateRangeTaskContainer1.getDateRange().compareTo(dateRangeTaskContainer2.getDateRange()); -// if (dateRangeTaskContainer1.isCaptureFloating() && !dateRangeTaskContainer2.isCaptureFloating()) { -// return 1; -// } else if (!dateRangeTaskContainer1.isCaptureFloating() && dateRangeTaskContainer2.isCaptureFloating()) { -// return -1; -// } } else if (o1 instanceof ITaskContainer && o2 instanceof ScheduledTaskContainer) { return -1; } else if (o1 instanceof ScheduledTaskContainer && o2 instanceof ITaskContainer) { @@ -134,16 +119,6 @@ public class TaskListInterestSorter extends ViewerSorter { } private int compareScheduledDate(AbstractTask task1, AbstractTask task2) { -// if (task1.internalIsFloatingScheduledDate() && !task2.internalIsFloatingScheduledDate()) { -// return 1; -// } else if (!task1.internalIsFloatingScheduledDate() && task2.internalIsFloatingScheduledDate()) { -// return -1; -// } else if (task1.internalIsFloatingScheduledDate() && task2.internalIsFloatingScheduledDate()) { -// if (task1.getScheduledForDate() != null && task2.getScheduledForDate() != null) { -// return 0; -// } -// } - if (isToday(task1) && !isToday(task2)) { return -1; } else if (!isToday(task1) && isToday(task2)) { @@ -154,21 +129,10 @@ public class TaskListInterestSorter extends ViewerSorter { } private boolean isToday(AbstractTask task) { - return task.isPastReminder() || TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task); + return TasksUiPlugin.getTaskActivityManager().isPastReminder(task) + || TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task); } -// private int compareThisWeek(AbstractTask task1, AbstractTask task2) { -// if (TasksUiPlugin.getTaskActivityManager().isScheduledForThisWeek(task1) -// && !TasksUiPlugin.getTaskActivityManager().isScheduledForThisWeek(task2)) { -// return 1; -// } else if (!TasksUiPlugin.getTaskActivityManager().isScheduledForThisWeek(task1) -// && TasksUiPlugin.getTaskActivityManager().isScheduledForThisWeek(task2)) { -// return -1; -// } else { -// return 0; -// } -// } - private int compareCompleted(ITask task1, ITask task2) { if (task1.isCompleted() && !task2.isCompleted()) { return 1; @@ -179,40 +143,6 @@ public class TaskListInterestSorter extends ViewerSorter { } } -// private int compareOverScheduled(AbstractTask task1, AbstractTask task2) { -// if (task1.isPastReminder() && !task2.isPastReminder()) { -// return -1; -// } else if (!task1.isPastReminder() && task2.isPastReminder()) { -// return 1; -// } else { -// return 0; -// } -// } -// -// private int compareScheduledToday(AbstractTask task1, AbstractTask task2) { -// if (TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task1) -// && !TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task2)) { -// return -1; -// } else if (!TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task1) -// && TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task2)) { -// return 1; -// } else { -// return 0; -// } -// } - - // private int compareChanges(ITask task1, ITask task2) { - // if (TaskListInterestFilter.hasChanges(task1) && - // !TaskListInterestFilter.hasChanges(task2)) { - // return 1; - // } else if (!TaskListInterestFilter.hasChanges(task1) && - // TaskListInterestFilter.hasChanges(task2)) { - // return -1; - // } else { - // return 0; - // } - // } - private int comparePrioritiesAndKeys(IRepositoryElement element1, IRepositoryElement element2) { int priority = comparePriorities(element1, element2); if (priority != 0) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskElementLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskElementLabelProvider.java index a27c31687..e09c994de 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskElementLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskElementLabelProvider.java @@ -201,7 +201,7 @@ public class TaskElementLabelProvider extends LabelProvider implements IColorPro return themeManager.getCurrentTheme().getColorRegistry().get(CommonThemes.COLOR_OVERDUE); } else if (TasksUiPlugin.getTaskActivityManager().isDueToday(task)) { return themeManager.getCurrentTheme().getColorRegistry().get(CommonThemes.COLOR_SCHEDULED_TODAY); - } else if (task.getScheduledForDate() != null && task.getScheduledForDate().isDay() + } else if (task.getScheduledForDate() != null && TasksUiPlugin.getTaskActivityManager().isPastReminder(task)) { return themeManager.getCurrentTheme().getColorRegistry().get(CommonThemes.COLOR_SCHEDULED_PAST); } else if (TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task)) { |