### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.sandbox.ui Index: src/org/eclipse/mylyn/internal/sandbox/ui/GroupedTaskListContentProvider.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/sandbox/org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/GroupedTaskListContentProvider.java,v retrieving revision 1.11 diff -u -r1.11 GroupedTaskListContentProvider.java --- src/org/eclipse/mylyn/internal/sandbox/ui/GroupedTaskListContentProvider.java 13 Sep 2008 03:38:54 -0000 1.11 +++ src/org/eclipse/mylyn/internal/sandbox/ui/GroupedTaskListContentProvider.java 1 Mar 2009 07:32:19 -0000 @@ -31,7 +31,7 @@ private GroupBy groupBy = GroupBy.None; public GroupedTaskListContentProvider(TaskListView taskListView, GroupBy groupBy) { - super(taskListView); + super(taskListView, null); this.groupBy = groupBy; } Index: src/org/eclipse/mylyn/internal/sandbox/ui/IncomingTaskListContentProvider.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/sandbox/org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/IncomingTaskListContentProvider.java,v retrieving revision 1.14 diff -u -r1.14 IncomingTaskListContentProvider.java --- src/org/eclipse/mylyn/internal/sandbox/ui/IncomingTaskListContentProvider.java 7 Oct 2008 04:48:21 -0000 1.14 +++ src/org/eclipse/mylyn/internal/sandbox/ui/IncomingTaskListContentProvider.java 1 Mar 2009 07:32:19 -0000 @@ -32,7 +32,7 @@ Set people = new HashSet(); public IncomingTaskListContentProvider(TaskListView taskListView) { - super(taskListView); + super(taskListView, null); } @Override #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java,v retrieving revision 1.74 diff -u -r1.74 TaskListContentProvider.java --- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java 13 Jan 2009 07:07:36 -0000 1.74 +++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java 1 Mar 2009 07:32:21 -0000 @@ -40,12 +40,17 @@ * @author Rob Elves */ public class TaskListContentProvider extends AbstractTaskListContentProvider { + private final TaskListSorter.RootSortByIndex rootSort; - public TaskListContentProvider(TaskListView taskListView) { + public TaskListContentProvider(TaskListView taskListView, TaskListSorter.RootSortByIndex rootSort) { super(taskListView); + this.rootSort = rootSort; } public void inputChanged(Viewer v, Object oldInput, Object newInput) { + if (newInput != null && rootSort != null) { + taskListView.getSorter().setRootSortByIndex(rootSort); + } this.taskListView.expandToActiveTasks(); } Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java,v retrieving revision 1.1 diff -u -r1.1 TaskListSorter.java --- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java 18 Jan 2009 08:53:02 -0000 1.1 +++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListSorter.java 1 Mar 2009 07:32:22 -0000 @@ -11,6 +11,7 @@ package org.eclipse.mylyn.internal.tasks.ui.views; +import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; @@ -22,6 +23,7 @@ import org.eclipse.mylyn.internal.tasks.core.UncategorizedTaskContainer; import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; import org.eclipse.mylyn.internal.tasks.core.UnsubmittedTaskContainer; +import org.eclipse.mylyn.internal.tasks.ui.dialogs.Messages; import org.eclipse.mylyn.internal.tasks.ui.util.TaskComparator; import org.eclipse.mylyn.tasks.core.ITask; @@ -36,6 +38,35 @@ private final TaskComparator taskComparator; + public enum RootSortByIndex { + NO_GROUPING, CATEGORY_AND_QUERY, CATEGORY_AND_REPOSITORY; + + public String getLabel() { + switch (this) { + case NO_GROUPING: + return Messages.TaskCompareDialog_Priority; + case CATEGORY_AND_QUERY: + return Messages.TaskCompareDialog_Summary; + case CATEGORY_AND_REPOSITORY: + return Messages.TaskCompareDialog_TaskID; + default: + return null; + } + } + + public static RootSortByIndex valueOfLabel(String label) { + for (RootSortByIndex value : values()) { + if (value.getLabel().equals(label)) { + return value; + } + } + return null; + } + + } + + private RootSortByIndex sortByIndex = RootSortByIndex.NO_GROUPING; + public TaskListSorter() { this.sortDirectionRootElement = DEFAULT_SORT_DIRECTION; this.taskComparator = new TaskComparator(); @@ -93,15 +124,90 @@ } else { o2Type = 99; } - if (o1Type != o2Type) { - return o1Type - o2Type < 0 ? -1 : 1; - } - if (o1Type < 7) { - AbstractTaskContainer taskContainer1 = (AbstractTaskContainer) o1; - AbstractTaskContainer taskContainer2 = (AbstractTaskContainer) o2; - - return this.sortDirectionRootElement - * taskContainer1.getSummary().compareToIgnoreCase(taskContainer2.getSummary()); + switch (sortByIndex) { + case NO_GROUPING: + if (o1Type == 4) { + o1Type = 3; + } + if (o2Type == 4) { + o2Type = 3; + } + if (o1Type != o2Type) { + return o1Type - o2Type < 0 ? -1 : 1; + } + if (o1Type < 7) { + AbstractTaskContainer taskContainer1 = (AbstractTaskContainer) o1; + AbstractTaskContainer taskContainer2 = (AbstractTaskContainer) o2; + + return this.sortDirectionRootElement + * taskContainer1.getSummary().compareToIgnoreCase(taskContainer2.getSummary()); + } + + break; + case CATEGORY_AND_REPOSITORY: + if ((o1Type == 1 || o1Type == 3 || o2Type == 1 || o2Type == 3) && o1Type != o2Type) { + return o1Type - o2Type < 0 ? -1 : 1; + } + if (o1Type < 7) { + String url1 = ""; //$NON-NLS-1$ + String url2 = ""; //$NON-NLS-1$ + if (o1Type == 2) { + url1 = ((UnsubmittedTaskContainer) o1).getRepositoryUrl(); + } + if (o2Type == 2) { + url2 = ((UnsubmittedTaskContainer) o2).getRepositoryUrl(); + } + if (o1Type == 4) { + url1 = ((RepositoryQuery) o1).getRepositoryUrl(); + } + if (o2Type == 4) { + url2 = ((RepositoryQuery) o2).getRepositoryUrl(); + } + + if (o1Type == 6) { + url1 = ((UnmatchedTaskContainer) o1).getRepositoryUrl(); + } + if (o2Type == 6) { + url2 = ((UnmatchedTaskContainer) o2).getRepositoryUrl(); + } + + int erg = url1.compareToIgnoreCase(url2); + if (erg == 0) { + //o2Type = 4 + //o2Type = 2 + //o2Type = 6 + if (o1Type == 4) { + o1Type = 1; + } + if (o2Type == 4) { + o2Type = 1; + } + if (o1Type == 6) { + o1Type = 3; + } + if (o2Type == 6) { + o2Type = 3; + } + return o1Type - o2Type < 0 ? -1 : 1; + } + return this.sortDirectionRootElement * erg; + } + + break; + + case CATEGORY_AND_QUERY: + default: + if (o1Type != o2Type) { + return o1Type - o2Type < 0 ? -1 : 1; + } + if (o1Type < 7) { + AbstractTaskContainer taskContainer1 = (AbstractTaskContainer) o1; + AbstractTaskContainer taskContainer2 = (AbstractTaskContainer) o2; + + return this.sortDirectionRootElement + * taskContainer1.getSummary().compareToIgnoreCase(taskContainer2.getSummary()); + } + break; } } return 0; @@ -124,4 +230,13 @@ this.sortDirectionRootElement = sortDirection; } + public RootSortByIndex getRootSortByIndex() { + return sortByIndex; + } + + public void setRootSortByIndex(RootSortByIndex sortByIndex) { + Assert.isNotNull(sortByIndex); + this.sortByIndex = sortByIndex; + } + } Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java,v retrieving revision 1.39 diff -u -r1.39 TaskScheduleContentProvider.java --- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java 19 Feb 2009 22:21:59 -0000 1.39 +++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java 1 Mar 2009 07:32:22 -0000 @@ -50,7 +50,7 @@ private Job rolloverJob; public TaskScheduleContentProvider(TaskListView taskListView) { - super(taskListView); + super(taskListView, null); this.taskActivityManager = TasksUiPlugin.getTaskActivityManager(); taskActivityManager.addActivityListener(this); END_OF_TIME = TaskActivityUtil.getCalendar(); Index: plugin.properties =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/plugin.properties,v retrieving revision 1.4 diff -u -r1.4 plugin.properties --- plugin.properties 18 Feb 2009 01:43:26 -0000 1.4 +++ plugin.properties 1 Mar 2009 07:32:20 -0000 @@ -11,6 +11,8 @@ LocalRepositoryConnectorUi.name = Local Repository Ui CategorizedPresentation.name = Categorized +CategorizedQueryPresentation.name = Categorized by Query +CategorizedRepositoryPresentation.name = Categorized by Repository ScheduledPresentation.name = Scheduled views.category.name = Mylyn Index: plugin.xml =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/plugin.xml,v retrieving revision 1.352 diff -u -r1.352 plugin.xml --- plugin.xml 19 Feb 2009 17:41:10 -0000 1.352 +++ plugin.xml 1 Mar 2009 07:32:21 -0000 @@ -1154,6 +1154,18 @@ name="%CategorizedPresentation.name" primary="true"/> + +