diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse')
9 files changed, 159 insertions, 179 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java index c05712d5f..a3cc7b66e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java @@ -29,6 +29,8 @@ public class Messages extends NLS { public static String TaskCompareDialog_Descending; + public static String TaskCompareDialog_Presentation_warning; + public static String TaskCompareDialog_Sort_by; public static String TaskCompareDialog_Sorting; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java index ade2b685f..ba3770ed1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java @@ -79,6 +79,10 @@ public class TaskCompareDialog extends SelectionDialog { prioritiesArea.setLayout(new GridLayout(3, false)); prioritiesArea.setText(Messages.TaskCompareDialog_Tasks); + Label label = new Label(prioritiesArea, SWT.WRAP); + label.setText(Messages.TaskCompareDialog_Presentation_warning); + label.setLayoutData(GridDataFactory.swtDefaults().span(3, 1).create()); + ascendingButtons = new Button[SortCriterion.kindCount]; descendingButtons = new Button[SortCriterion.kindCount]; priorityCombos = new Combo[SortCriterion.kindCount]; @@ -153,7 +157,8 @@ public class TaskCompareDialog extends SelectionDialog { for (int j = 0; j < availablePriorities.size(); j++) { priorityCombos[k].add(availablePriorities.get(j)); } - priorityCombos[k].select(priorityCombos[k].indexOf(propertyText[SortKey.NONE.ordinal()])); + priorityCombos[k] + .select(priorityCombos[k].indexOf(propertyText[SortKey.NONE.ordinal()])); } } } else if (newSelection.equals(propertyText[SortKey.NONE.ordinal()])) { @@ -168,7 +173,8 @@ public class TaskCompareDialog extends SelectionDialog { for (int j = 0; j < availablePriorities.size(); j++) { priorityCombos[k].add(availablePriorities.get(j)); } - priorityCombos[k].select(priorityCombos[k].indexOf(propertyText[SortKey.NONE.ordinal()])); + priorityCombos[k] + .select(priorityCombos[k].indexOf(propertyText[SortKey.NONE.ordinal()])); priorityCombos[k].setEnabled(false); ascendingButtons[k].setEnabled(false); descendingButtons[k].setEnabled(false); @@ -180,16 +186,15 @@ public class TaskCompareDialog extends SelectionDialog { //this combo's current selection is equal to newSelection if (priorityCombos[j].getSelectionIndex() == newSelectionIndex) { priorityCombos[j].remove(newSelection); - int insertionPoint = -1 - - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, - columnComparator); + int insertionPoint = -1 - Arrays.binarySearch(priorityCombos[j].getItems(), + oldSelection, columnComparator); if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { priorityCombos[j].add(oldSelection, insertionPoint); } else { priorityCombos[j].add(oldSelection); } priorityCombos[j].select(priorityCombos[j].indexOf(oldSelection)); -// remove the comment if you want to move the current ascending/descending +// remove the comment if you want to move the current ascending/descending // ascendingButtons[index].setSelection(ascendingButtons[j].getSelection()); // descendingButtons[index].setSelection(descendingButtons[j].getSelection()); // ascendingButtons[j].setSelection(oldSelectionDirection == 1); @@ -199,9 +204,8 @@ public class TaskCompareDialog extends SelectionDialog { else if (newSelectionIndex >= 0) { String currentText = priorityCombos[j].getText(); priorityCombos[j].remove(newSelection); - int insertionPoint = -1 - - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, - columnComparator); + int insertionPoint = -1 - Arrays.binarySearch(priorityCombos[j].getItems(), + oldSelection, columnComparator); if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { priorityCombos[j].add(oldSelection, insertionPoint); priorityCombos[j].select(priorityCombos[j].indexOf(currentText)); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties index 76c4b7292..55bff2a2a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties @@ -10,6 +10,7 @@ ############################################################################### TaskCompareDialog_Ascending=Ascending TaskCompareDialog_Descending=Descending +TaskCompareDialog_Presentation_warning=The configured sorting criteria will apply to the currently selected Task List Presentation only. TaskCompareDialog_Sort_by=Sort by: TaskCompareDialog_Sorting=Sorting TaskCompareDialog_Tasks=Tasks diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/Messages.java index f0ad9228d..7149d8eb0 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/Messages.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/Messages.java @@ -43,6 +43,8 @@ public class Messages extends NLS { public static String SortCriterion_Modification_Date; + public static String SortCriterion_Scheduled_Date; + public static String SortCriterion_Type; public static String SortKindEntry_Date_Created; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/SortCriterion.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/SortCriterion.java index 9c0f7ce37..e47387dab 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/SortCriterion.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/SortCriterion.java @@ -22,7 +22,7 @@ import org.eclipse.ui.IMemento; public class SortCriterion { public enum SortKey { - NONE, DATE_CREATED, PRIORITY, RANK, SUMMARY, TASK_ID, TASK_TYPE, DUE_DATE, MODIFICATION_DATE; + NONE, DATE_CREATED, PRIORITY, RANK, SUMMARY, TASK_ID, TASK_TYPE, DUE_DATE, MODIFICATION_DATE, SCHEDULED_DATE; public static SortKey valueOfLabel(String label) { for (SortKey value : values()) { @@ -53,6 +53,8 @@ public class SortCriterion { return Messages.SortKindEntry_Due_Date; case MODIFICATION_DATE: return Messages.SortCriterion_Modification_Date; + case SCHEDULED_DATE: + return Messages.SortCriterion_Scheduled_Date; default: return null; } @@ -60,20 +62,24 @@ public class SortCriterion { } - private SortKey key; - - private int direction; - private static final String MEMENTO_KEY_SORT_KEY = "sortKey"; //$NON-NLS-1$ private static final String MEMENTO_KEY_SORT_DIRECTION = "sortDirection"; //$NON-NLS-1$ private static final SortKey DEFAULT_SORT_KIND = SortKey.NONE; - private static final int DEFAULT_SORT_DIRECTION = 1; + public static final int ASCENDING = 1; + + public static final int DESCENDING = -1; + + private static final int DEFAULT_SORT_DIRECTION = ASCENDING; public static final int kindCount = SortKey.values().length - 1; + private SortKey key; + + private int direction; + public SortCriterion() { key = DEFAULT_SORT_KIND; direction = DEFAULT_SORT_DIRECTION; 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 5c5ecdc8e..a735f513a 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 @@ -15,31 +15,36 @@ package org.eclipse.mylyn.internal.tasks.ui.util; import java.util.Comparator; import java.util.Date; +import java.util.List; +import org.eclipse.mylyn.internal.tasks.core.AbstractTask; +import org.eclipse.mylyn.internal.tasks.core.DateRange; +import org.eclipse.mylyn.internal.tasks.core.DayDateRange; +import org.eclipse.mylyn.internal.tasks.ui.CategorizedPresentation; +import org.eclipse.mylyn.internal.tasks.ui.ScheduledPresentation; import org.eclipse.mylyn.internal.tasks.ui.util.SortCriterion.SortKey; +import org.eclipse.mylyn.internal.tasks.ui.views.AbstractTaskListPresentation; import org.eclipse.mylyn.internal.tasks.ui.views.TaskKeyComparator; +import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.IRepositoryElement; import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; import org.eclipse.ui.IMemento; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.ListMultimap; + /** * @author Mik Kersten * @author Frank Becker */ public class TaskComparator implements Comparator<ITask> { - private final SortCriterion[] sortCriteria; - - public static final int DEFAULT_SORT_DIRECTION = 1; - - private static final SortKey DEFAULT_SORT_INDEX = SortKey.PRIORITY; - - private static final SortKey DEFAULT_SORT_INDEX2 = SortKey.RANK; + private static final String MEMENTO_KEY_SORT = "sort"; //$NON-NLS-1$ - private static final SortKey DEFAULT_SORT_INDEX3 = SortKey.DATE_CREATED; + private final ListMultimap<String, SortCriterion> sortCriteria; - private static final String MEMENTO_KEY_SORT = "sort"; //$NON-NLS-1$ + private String currentPresentation; /** * Return a array of values to pass to taskKeyComparator.compare() for sorting @@ -64,21 +69,43 @@ public class TaskComparator implements Comparator<ITask> { public static final int CRITERIA_COUNT = SortKey.values().length - 1; public TaskComparator() { - sortCriteria = new SortCriterion[CRITERIA_COUNT]; - for (int index = 0; index < CRITERIA_COUNT; index++) { - sortCriteria[index] = new SortCriterion(); + sortCriteria = ArrayListMultimap.create(); + + for (AbstractTaskListPresentation presentation : TaskListView.getPresentations()) { + String presentationId = presentation.getId(); + for (int i = 0; i < CRITERIA_COUNT; i++) { + sortCriteria.put(presentationId, new SortCriterion()); + } } - sortCriteria[0].setKey(DEFAULT_SORT_INDEX); - sortCriteria[1].setKey(DEFAULT_SORT_INDEX2); - sortCriteria[2].setKey(DEFAULT_SORT_INDEX3); + + for (String id : sortCriteria.keySet()) { + List<SortCriterion> presentationCriteria = sortCriteria.get(id); + if (id.equals(ScheduledPresentation.ID)) { + // scheduled presentation has specific defaults + presentationCriteria.get(0).setKey(SortKey.DUE_DATE); + presentationCriteria.get(0).setDirection(SortCriterion.ASCENDING); + presentationCriteria.get(1).setKey(SortKey.SCHEDULED_DATE); + presentationCriteria.get(1).setDirection(SortCriterion.ASCENDING); + presentationCriteria.get(2).setKey(SortKey.PRIORITY); + presentationCriteria.get(3).setKey(SortKey.RANK); + presentationCriteria.get(4).setKey(SortKey.DATE_CREATED); + } else { + // standard defaults + presentationCriteria.get(0).setKey(SortKey.PRIORITY); + presentationCriteria.get(1).setKey(SortKey.RANK); + presentationCriteria.get(2).setKey(SortKey.DATE_CREATED); + } + } + + currentPresentation = CategorizedPresentation.ID; } public int compare(ITask element1, ITask element2) { - for (SortCriterion key : sortCriteria) { + for (SortCriterion key : getCurrentCriteria()) { int result; switch (key.getKey()) { case DATE_CREATED: - result = sortByDate(element1, element2, key.getDirection()); + result = sortByCreationDate(element1, element2, key.getDirection()); break; case RANK: result = sortByRank(element1, element2, key.getDirection()); @@ -101,6 +128,9 @@ public class TaskComparator implements Comparator<ITask> { case MODIFICATION_DATE: result = sortByModificationDate(element1, element2, key.getDirection()); break; + case SCHEDULED_DATE: + result = sortByScheduledDate(element1, element2, key.getDirection()); + break; default: // NONE return 0; } @@ -113,15 +143,24 @@ public class TaskComparator implements Comparator<ITask> { } public SortCriterion getSortCriterion(int index) { - return sortCriteria[index]; + return getCurrentCriteria().get(index); } public void restoreState(IMemento memento) { if (memento != null) { - for (int index = 0; index < CRITERIA_COUNT; index++) { - IMemento child = memento.getChild(MEMENTO_KEY_SORT + index); - if (child != null && sortCriteria[index] != null) { - sortCriteria[index].restoreState(child); + for (String presentationId : sortCriteria.keySet()) { + List<SortCriterion> criteria = sortCriteria.get(presentationId); + for (int i = 0; i < criteria.size(); i++) { + IMemento child = memento.getChild(MEMENTO_KEY_SORT + presentationId + i); + if (child != null) { + criteria.get(i).restoreState(child); + } else if (CategorizedPresentation.ID.equals(presentationId)) { + // attempt to read memento as it would have recorded before sort criteria were stored by presentation + child = memento.getChild(MEMENTO_KEY_SORT + i); + if (child != null) { + criteria.get(i).restoreState(child); + } + } } } } @@ -129,38 +168,66 @@ public class TaskComparator implements Comparator<ITask> { public void saveState(IMemento memento) { if (memento != null) { - for (int index = 0; index < CRITERIA_COUNT; index++) { - IMemento child = memento.createChild(MEMENTO_KEY_SORT + index); - if (child != null && sortCriteria[index] != null) { - sortCriteria[index].saveState(child); + for (String presentationId : sortCriteria.keySet()) { + List<SortCriterion> criteria = sortCriteria.get(presentationId); + for (int i = 0; i < criteria.size(); i++) { + IMemento child = memento.createChild(MEMENTO_KEY_SORT + presentationId + i); + if (child != null) { + criteria.get(i).saveState(child); + } } } } } - private int sortByDate(ITask element1, ITask element2, int sortDirection) { - Date date1 = element1.getCreationDate(); - Date date2 = element2.getCreationDate(); - if (date1 == null) { - return (date2 != null) ? sortDirection : 0; - } else if (date2 == null) { - return -sortDirection; - } - return sortDirection * date1.compareTo(date2); + public void presentationChanged(AbstractTaskListPresentation presentation) { + currentPresentation = presentation.getId(); + } + + private List<SortCriterion> getCurrentCriteria() { + return sortCriteria.get(currentPresentation); + } + + private int sortByCreationDate(ITask task1, ITask task2, int sortDirection) { + Date date1 = task1.getCreationDate(); + Date date2 = task2.getCreationDate(); + return compare(date1, date2, sortDirection); } - private int sortByDueDate(ITask element1, ITask element2, int sortDirection) { - Date date1 = element1.getDueDate(); - Date date2 = element2.getDueDate(); + private int sortByDueDate(ITask task1, ITask task2, int sortDirection) { + Date date1 = task1.getDueDate(); + Date date2 = task2.getDueDate(); return compare(date1, date2, sortDirection); } - private int sortByModificationDate(ITask element1, ITask element2, int sortDirection) { - Date date1 = element1.getModificationDate(); - Date date2 = element2.getModificationDate(); + private int sortByModificationDate(ITask task1, ITask task2, int sortDirection) { + Date date1 = task1.getModificationDate(); + Date date2 = task2.getModificationDate(); return compare(date1, date2, sortDirection); } + private int sortByScheduledDate(ITask task1, ITask task2, int sortDirection) { + if (task1 instanceof AbstractTask && task2 instanceof AbstractTask) { + DateRange date1 = ((AbstractTask) task1).getScheduledForDate(); + DateRange date2 = ((AbstractTask) task2).getScheduledForDate(); + return compare(date1, date2, sortDirection); + } + return 0; + } + + private int compare(DateRange date1, DateRange date2, int sortDirection) { + if (date1 == null) { + return date2 == null ? 0 : 1; + } else if (date2 == null) { + return -1; + } else if (date1 instanceof DayDateRange && !(date2 instanceof DayDateRange)) { + return -1; + } else if (date2 instanceof DayDateRange && !(date1 instanceof DayDateRange)) { + return 1; + } + return compare(date1.getEndDate(), date2.getEndDate(), sortDirection); + } + private <T> int compare(Comparable<T> key1, T key2, int sortDirection) { if (key1 == null) { return (key2 != null) ? sortDirection : 0; @@ -170,9 +237,9 @@ public class TaskComparator implements Comparator<ITask> { return sortDirection * key1.compareTo(key2); } - private int sortByID(ITask element1, ITask element2, int sortDirection) { - String key1 = element1.getTaskKey(); - String key2 = element2.getTaskKey(); + private int sortByID(ITask task1, ITask task2, int sortDirection) { + String key1 = task1.getTaskKey(); + String key2 = task2.getTaskKey(); if (key1 == null) { return (key2 != null) ? sortDirection : 0; } else if (key2 == null) { @@ -181,15 +248,15 @@ public class TaskComparator implements Comparator<ITask> { return sortDirection * taskKeyComparator.compare2(key1, key2); } - private int sortByRank(ITask element1, ITask element2, int sortDirection) { - if (element1.getConnectorKind() != null && element2.getConnectorKind() != null - && element1.getConnectorKind().equals(element2.getConnectorKind())) { + private int sortByRank(ITask task1, ITask task2, int sortDirection) { + if (task1.getConnectorKind() != null && task2.getConnectorKind() != null + && task1.getConnectorKind().equals(task2.getConnectorKind())) { // only compare rank of elements from the same connector - if (element1.getRepositoryUrl() != null && element2.getRepositoryUrl() != null - && element1.getRepositoryUrl().equals(element2.getRepositoryUrl())) { + if (task1.getRepositoryUrl() != null && task2.getRepositoryUrl() != null + && task1.getRepositoryUrl().equals(task2.getRepositoryUrl())) { // only compare the rank of elements in the same repository - String rankString1 = element1.getAttribute(TaskAttribute.RANK); - String rankString2 = element2.getAttribute(TaskAttribute.RANK); + String rankString1 = task1.getAttribute(TaskAttribute.RANK); + String rankString2 = task2.getAttribute(TaskAttribute.RANK); try { Double rank1 = rankString1 == null || rankString1.length() == 0 ? Double.valueOf(0) @@ -206,13 +273,13 @@ public class TaskComparator implements Comparator<ITask> { return 0; } - private int sortByPriority(ITask element1, ITask element2, int sortDirection) { - return sortDirection * element1.getPriority().compareToIgnoreCase(element2.getPriority()); + private int sortByPriority(ITask task1, ITask task2, int sortDirection) { + return sortDirection * task1.getPriority().compareToIgnoreCase(task2.getPriority()); } - private int sortBySummary(ITask element1, ITask element2, int sortDirection) { - String key1 = element1.getSummary(); - String key2 = element2.getSummary(); + private int sortBySummary(ITask task1, ITask task2, int sortDirection) { + String key1 = task1.getSummary(); + String key2 = task2.getSummary(); if (key1 == null) { return (key2 != null) ? sortDirection : 0; } else if (key2 == null) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/messages.properties index 85fe46740..cc0eaa6f5 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/messages.properties +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/messages.properties @@ -19,6 +19,7 @@ DownloadAttachmentJob_Copy_Attachment_to_Clipboard=Copy Attachment to Clipboard DownloadAttachmentJob_Downloading_Attachment=Downloading Attachment ImportExportUtil_Tasks_and_queries_Filter0=Mylyn Tasks and Queries (*{0}) SortCriterion_Modification_Date=Modification Date +SortCriterion_Scheduled_Date=Scheduled Date SortCriterion_Type=Type SortKindEntry_Date_Created=Date Created SortKindEntry_None=None diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java index 7206ed955..2cb87d7c7 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java @@ -99,10 +99,10 @@ public class TaskListSorter extends ViewerSorter { @Override public int compare(Viewer compareViewer, Object o1, Object o2) { if (o1 instanceof AbstractTask && o2 instanceof AbstractTask) { - // sort of the tasks within the container using the setting from the Sortdialog + // sort of the tasks within the container using the setting from the Sort Dialog ITask element1 = (ITask) o1; ITask element2 = (ITask) o2; - return compareElements(element1, element2); + return taskComparator.compare(element1, element2); } else if (o1 instanceof ScheduledTaskContainer && o2 instanceof ScheduledTaskContainer) { // scheduled Mode compare ScheduledTaskContainer dateRangeTaskContainer1 = (ScheduledTaskContainer) o1; @@ -170,7 +170,7 @@ public class TaskListSorter extends ViewerSorter { weight = 2; } else { key.values[0] = getRepositoryUrl(object); - key.values[1] = weight + ""; //$NON-NLS-1$ + key.values[1] = Integer.toString(weight); key.values[2] = ((AbstractTaskContainer) object).getSummary(); weight = 3; } @@ -188,20 +188,9 @@ public class TaskListSorter extends ViewerSorter { .getRepository(repositoryElement.getConnectorKind(), repositoryUrl); return taskRepository != null ? taskRepository.getRepositoryLabel() : null; } -// if (object instanceof UnsubmittedTaskContainer) { -// return ((UnsubmittedTaskContainer) object).getRepositoryUrl(); -// } else if (object instanceof RepositoryQuery) { -// return ((RepositoryQuery) object).getRepositoryUrl(); -// } else if (object instanceof UnmatchedTaskContainer) { -// return ((UnmatchedTaskContainer) object).getRepositoryUrl(); -// } return null; } - private int compareElements(ITask element1, ITask element2) { - return taskComparator.compare(element1, element2); - } - public TaskComparator getTaskComparator() { return taskComparator; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java index 077d657c8..b7340e71c 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java @@ -92,8 +92,6 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.TaskListViewActionGroup; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListServiceMessageControl; import org.eclipse.mylyn.internal.tasks.ui.search.AbstractSearchHandler; import org.eclipse.mylyn.internal.tasks.ui.search.SearchUtil; -import org.eclipse.mylyn.internal.tasks.ui.util.SortCriterion; -import org.eclipse.mylyn.internal.tasks.ui.util.SortCriterion.SortKey; import org.eclipse.mylyn.internal.tasks.ui.util.TaskDragSourceListener; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; import org.eclipse.mylyn.tasks.core.IRepositoryElement; @@ -128,8 +126,6 @@ import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; @@ -197,21 +193,6 @@ public class TaskListView extends AbstractTaskListView implements IPropertyChang public static final String LABEL_VIEW = Messages.TaskListView_Task_List; - @Deprecated - private static final String MEMENTO_KEY_SORT_DIRECTION = "sortDirection"; //$NON-NLS-1$ - - @Deprecated - private static final String MEMENTO_KEY_SORTER = "sorter"; //$NON-NLS-1$ - - @Deprecated - private static final String MEMENTO_KEY_SORTER2 = "sorter2"; //$NON-NLS-1$ - - @Deprecated - private static final String MEMENTO_KEY_SORT_INDEX = "sortIndex"; //$NON-NLS-1$ - - @Deprecated - private static final String MEMENTO_SORT_INDEX = "org.eclipse.mylyn.tasklist.ui.views.tasklist.sortIndex"; //$NON-NLS-1$ - private static final String MEMENTO_SORTER = "sorter"; //$NON-NLS-1$ private static final String MEMENTO_LINK_WITH_EDITOR = "linkWithEditor"; //$NON-NLS-1$ @@ -536,11 +517,6 @@ public class TaskListView extends AbstractTaskListView implements IPropertyChang IMemento sorterMemento = taskListMemento.getChild(MEMENTO_SORTER); if (sorterMemento != null) { tableSorter.restoreState(sorterMemento); - } else { - sorterMemento = taskListMemento.getChild(MEMENTO_SORT_INDEX); - if (sorterMemento != null) { - migrateSorterState(tableSorter, sorterMemento); - } } } applyPresentation(taskListMemento.getString(MEMENTO_PRESENTATION)); @@ -579,67 +555,6 @@ public class TaskListView extends AbstractTaskListView implements IPropertyChang getViewer().refresh(); } - /** - * Public for testing only. - */ - public void migrateSorterState(TaskListSorter tableSorter, IMemento sorterMemento) { - int restoredSortIndex = 0; - if (sorterMemento != null) { - int sortDirection = -1; - IMemento m = sorterMemento.getChild(MEMENTO_KEY_SORTER); - if (m != null) { - Integer sortIndexInt = m.getInteger(MEMENTO_KEY_SORT_INDEX); - if (sortIndexInt != null) { - restoredSortIndex = sortIndexInt.intValue(); - } - Integer sortDirInt = m.getInteger(MEMENTO_KEY_SORT_DIRECTION); - if (sortDirInt != null) { - sortDirection = sortDirInt.intValue(); - tableSorter.getTaskComparator().getSortCriterion(0).setDirection(sortDirection); - switch (restoredSortIndex) { - case 1: - tableSorter.getTaskComparator().getSortCriterion(0).setKey(SortKey.SUMMARY); - break; - case 2: - tableSorter.getTaskComparator().getSortCriterion(0).setKey(SortKey.DATE_CREATED); - break; - case 3: - tableSorter.getTaskComparator().getSortCriterion(0).setKey(SortKey.TASK_ID); - break; - default: - tableSorter.getTaskComparator().getSortCriterion(0).setKey(SortKey.PRIORITY); - } - } - } - - IMemento m2 = sorterMemento.getChild(MEMENTO_KEY_SORTER2); - if (m2 != null) { - Integer sortIndexInt = m2.getInteger(MEMENTO_KEY_SORT_INDEX); - if (sortIndexInt != null) { - restoredSortIndex = sortIndexInt.intValue(); - } - Integer sortDirInt = m2.getInteger(MEMENTO_KEY_SORT_DIRECTION); - if (sortDirInt != null) { - sortDirection = sortDirInt.intValue(); - tableSorter.getTaskComparator().getSortCriterion(1).setDirection(sortDirection); - switch (restoredSortIndex) { - case 1: - tableSorter.getTaskComparator().getSortCriterion(1).setKey(SortKey.SUMMARY); - break; - case 2: - tableSorter.getTaskComparator().getSortCriterion(1).setKey(SortKey.DATE_CREATED); - break; - case 3: - tableSorter.getTaskComparator().getSortCriterion(1).setKey(SortKey.TASK_ID); - break; - default: - tableSorter.getTaskComparator().getSortCriterion(1).setKey(SortKey.PRIORITY); - } - } - } - } - } - @Override public void createPartControl(Composite parent) { Composite body = new Composite(parent, SWT.NONE); @@ -913,6 +828,8 @@ public class TaskListView extends AbstractTaskListView implements IPropertyChang currentPresentation = presentation; updatePresentationSelectorImage(); + + tableSorter.getTaskComparator().presentationChanged(presentation); } finally { getViewer().getControl().setRedraw(true); } @@ -950,15 +867,6 @@ public class TaskListView extends AbstractTaskListView implements IPropertyChang layout.setColumnData(columns[i], new ColumnPixelData(columnWidths[i])); } - columns[i].addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - SortCriterion criterion = tableSorter.getTaskComparator().getSortCriterion(0); - criterion.setDirection(criterion.getDirection() * -1); - getViewer().refresh(false); - } - }); columns[i].addControlListener(new ControlListener() { public void controlResized(ControlEvent e) { for (int j = 0; j < columnWidths.length; j++) { |