|
Added
Link Here
|
| 1 |
package org.eclipse.mylar.internal.tasklist.ui.commands; |
| 2 |
|
| 3 |
import java.util.Calendar; |
| 4 |
import java.util.GregorianCalendar; |
| 5 |
import java.util.Map; |
| 6 |
|
| 7 |
import org.eclipse.core.commands.AbstractHandler; |
| 8 |
import org.eclipse.core.commands.ExecutionEvent; |
| 9 |
import org.eclipse.core.commands.ExecutionException; |
| 10 |
import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; |
| 11 |
import org.eclipse.mylar.provisional.core.MylarPlugin; |
| 12 |
import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; |
| 13 |
import org.eclipse.mylar.provisional.tasklist.ITask; |
| 14 |
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; |
| 15 |
import org.eclipse.mylar.provisional.tasklist.Task; |
| 16 |
import org.eclipse.mylar.provisional.tasklist.TaskCategory; |
| 17 |
import org.eclipse.mylar.provisional.tasklist.TaskList; |
| 18 |
|
| 19 |
/** |
| 20 |
* @author Izzet Safer |
| 21 |
*/ |
| 22 |
public class NewLocalTaskHandler extends AbstractHandler { |
| 23 |
|
| 24 |
@Override |
| 25 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
| 26 |
final Map parameters = event.getParameters(); |
| 27 |
final Object taskName = parameters.get("taskName"); |
| 28 |
// assign a unique handle when null |
| 29 |
final Object taskHandle = parameters.get("taskHandle"); |
| 30 |
// if taskHandle is not null and already exists, don't create a new task, use the existing |
| 31 |
final Object useExisting = parameters.get("useExisting"); |
| 32 |
// use root when null |
| 33 |
final Object categoryName = parameters.get("categoryName"); |
| 34 |
final Object activateTask = parameters.get("activateTask"); |
| 35 |
// delete the context associated with the task if an existing task is used |
| 36 |
final Object resetContext = parameters.get("resetContext"); |
| 37 |
|
| 38 |
if (taskName == null) { |
| 39 |
return null; |
| 40 |
} else { |
| 41 |
return createNewLocalTask(taskName.toString(), taskHandle, |
| 42 |
useExisting == null ? true : Boolean.parseBoolean((String)useExisting), |
| 43 |
categoryName, |
| 44 |
activateTask == null ? true : Boolean.parseBoolean((String)activateTask), |
| 45 |
resetContext == null ? false : Boolean.parseBoolean((String)resetContext)); |
| 46 |
} |
| 47 |
} |
| 48 |
|
| 49 |
private Object createNewLocalTask(String taskName, Object taskHandle, boolean useExisting, |
| 50 |
Object categoryName, boolean activateTask, boolean resetContext) { |
| 51 |
|
| 52 |
TaskList tl = MylarTaskListPlugin.getTaskListManager().getTaskList(); |
| 53 |
ITask newTask = null; |
| 54 |
|
| 55 |
AbstractTaskContainer cat; |
| 56 |
if (categoryName == null) { |
| 57 |
cat = tl.getRootCategory(); |
| 58 |
} |
| 59 |
else { |
| 60 |
cat = tl.getContainerForHandle(categoryName.toString()); |
| 61 |
if (cat == null) { |
| 62 |
cat = new TaskCategory(categoryName.toString(), tl); |
| 63 |
} |
| 64 |
tl.addCategory(cat); |
| 65 |
} |
| 66 |
|
| 67 |
String sHandle; |
| 68 |
if (taskHandle == null) { |
| 69 |
sHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(); |
| 70 |
} |
| 71 |
else { |
| 72 |
sHandle = taskHandle.toString(); |
| 73 |
if (useExisting) { |
| 74 |
newTask = tl.getTask(sHandle); |
| 75 |
} |
| 76 |
else { |
| 77 |
// if a task handle is given and use existing is false |
| 78 |
// (a pretty non-usual combination) force the context to be deleted |
| 79 |
resetContext = true; |
| 80 |
} |
| 81 |
} |
| 82 |
|
| 83 |
if (newTask == null) { |
| 84 |
newTask = new Task(sHandle, taskName, true); |
| 85 |
Calendar reminderCalendar = GregorianCalendar.getInstance(); |
| 86 |
MylarTaskListPlugin.getTaskListManager().setScheduledToday(reminderCalendar); |
| 87 |
MylarTaskListPlugin.getTaskListManager().setReminder(newTask, reminderCalendar.getTime()); |
| 88 |
|
| 89 |
tl.addTask(newTask, cat); |
| 90 |
} |
| 91 |
|
| 92 |
if (resetContext) { |
| 93 |
MylarPlugin.getContextManager().deleteContext(sHandle); |
| 94 |
newTask.getChildren().clear(); |
| 95 |
MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(newTask, false); |
| 96 |
} |
| 97 |
|
| 98 |
if (activateTask) MylarTaskListPlugin.getTaskListManager().activateTask(newTask); |
| 99 |
|
| 100 |
TaskListView.getFromActivePerspective().getViewer().refresh(); |
| 101 |
|
| 102 |
return sHandle; |
| 103 |
} |
| 104 |
} |