blob: 2ab499d6aff122cccff812469e600b323fbf3d0a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Mylyn project committers and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.mylyn.internal.sandbox.ui.planner;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.ITask;
/**
* @author Ken Sueda
* @author Mik Kersten
*/
public class TaskActivitySorter extends ViewerSorter {
public final static int DESCRIPTION = 1;
public final static int PRIORITY = 2;
public final static int CREATION_DATE = 3;
public final static int COMPLETED_DATE = 4;
public final static int DURATION = 5;
public final static int ESTIMATED = 6;
public static final int ICON = 0;
private final int criteria;
public TaskActivitySorter(int criteria) {
super();
this.criteria = criteria;
}
@Override
public int compare(Viewer viewer, Object obj1, Object obj2) {
AbstractTask t1 = (AbstractTask) obj1;
AbstractTask t2 = (AbstractTask) obj2;
switch (criteria) {
case DESCRIPTION:
return compareDescription(t1, t2);
case PRIORITY:
return comparePriority(t1, t2);
case CREATION_DATE:
return compareCreationDate(t1, t2);
case COMPLETED_DATE:
return compareCompletedDate(t1, t2);
case DURATION:
return compareDuration(t1, t2);
case ESTIMATED:
return compareEstimated(t1, t2);
default:
return 0;
}
}
protected int compareDescription(ITask task1, ITask task2) {
return task1.getSummary().compareToIgnoreCase(task2.getSummary());
}
protected int comparePriority(ITask task1, ITask task2) {
return task1.getPriority().compareTo(task2.getPriority());
}
protected int compareCompletedDate(ITask task1, ITask task2) {
return task2.getCompletionDate().compareTo(task1.getCompletionDate());
}
protected int compareEstimated(AbstractTask task1, AbstractTask task2) {
return task2.getEstimatedTimeHours() - task1.getEstimatedTimeHours();
}
protected int compareCreationDate(ITask task1, ITask task2) {
if (task1.getCreationDate() == null) {
return 1;
} else if (task2.getCreationDate() == null) {
return -1;
} else {
return task2.getCreationDate().compareTo(task1.getCreationDate());
}
}
protected int compareDuration(ITask task1, ITask task2) {
return TasksUiPlugin.getTaskActivityManager().getElapsedTime(task1) < TasksUiPlugin.getTaskActivityManager()
.getElapsedTime(task2) ? 1 : -1;
}
}