Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 145884 | Differences between
and this patch

Collapse All | Expand All

(-)plugin.xml (+113 lines)
Lines 419-425 Link Here
419
             id="org.eclipse.mylar.tasklist.hyperlinkLister.task"
419
             id="org.eclipse.mylar.tasklist.hyperlinkLister.task"
420
             type="task"/>
420
             type="task"/>
421
    </extension>-->
421
    </extension>-->
422
  
423
  	<extension point="org.eclipse.ui.handlers">
424
		<handler
425
			commandId="org.eclipse.mylar.tasklist.commands.addNewLocalTask"
426
			class="org.eclipse.mylar.internal.tasklist.ui.commands.NewLocalTaskHandler">
427
		</handler>		
428
		
429
		<handler
430
			commandId="org.eclipse.mylar.tasklist.commands.addNewLocalSubTask"
431
			class="org.eclipse.mylar.internal.tasklist.ui.commands.NewLocalSubTaskHandler">
432
		</handler>		
433
434
		<handler
435
			commandId="org.eclipse.mylar.tasklist.commands.activateTask"
436
			class="org.eclipse.mylar.internal.tasklist.ui.commands.ActivateTaskHandler">
437
		</handler>		
438
439
		<handler
440
			commandId="org.eclipse.mylar.tasklist.commands.completeTask"
441
			class="org.eclipse.mylar.internal.tasklist.ui.commands.MarkTaskCompleteHandler">
442
		</handler>		
443
444
    </extension>
445
  
446
  	<extension point="org.eclipse.ui.commands">
447
		<command 
448
			description="Add new Mylar Task"
449
			id="org.eclipse.mylar.tasklist.commands.addNewLocalTask"
450
			name="Add new Mylar Task">
451
			<commandParameter 
452
				id="taskName" 
453
				name="Task Name"
454
				optional="false"/>
455
			<commandParameter 
456
				id="taskHandle" 
457
				name="Unique Task Handle"
458
				optional="true"/>
459
			<commandParameter 
460
				id="useExisting" 
461
				name="Boolean parameter to use the existing task if taskHandle exists"
462
				optional="true"/>
463
			<commandParameter 
464
				id="categoryName" 
465
				name="Category Name"
466
				optional="true"/>
467
			<commandParameter 
468
				id="activateTask" 
469
				name="Boolean parameter to activate the task"
470
				optional="true"/>
471
			<commandParameter 
472
				id="resetContext" 
473
				name="Boolean parameter to delete the context of the existing task"
474
				optional="true"/>
475
		</command>
476
	
477
		<command 
478
			description="Add new Mylar Subtask"
479
			id="org.eclipse.mylar.tasklist.commands.addNewLocalSubTask"
480
			name="Add new Mylar Subtask">
481
			<commandParameter 
482
				id="taskName" 
483
				name="Subtask Name"
484
				optional="false"/>
485
			<commandParameter 
486
				id="taskHandle" 
487
				name="Unique Task Handle"
488
				optional="true"/>
489
			<commandParameter 
490
				id="parentHandle" 
491
				name="Handle to parent task"
492
				optional="false"/>
493
			<commandParameter 
494
				id="useExisting" 
495
				name="Boolean parameter to use the existing subtask if taskHandle exists"
496
				optional="true"/>
497
			<commandParameter 
498
				id="activateTask" 
499
				name="Boolean parameter to activate the subtask"
500
				optional="true"/>
501
			<commandParameter 
502
				id="resetContext" 
503
				name="Boolean parameter to delete the context of the existing subtask"
504
				optional="true"/>
505
		</command>
506
507
		<command 
508
			description="Activate/Deactivate a Mylar task"
509
			id="org.eclipse.mylar.tasklist.commands.activateTask"
510
			name="Activate a Mylar task">			
511
			<commandParameter 
512
				id="taskHandle" 
513
				name="Unique Task Handle"
514
				optional="false"/>
515
			<commandParameter 
516
				id="activate" 
517
				name="Boolean parameter to Activate/Deactivate"
518
				optional="true"/>
519
		</command>
520
521
		<command 
522
			description="Mark Complete/Incomplete a Mylar task"
523
			id="org.eclipse.mylar.tasklist.commands.completeTask"
524
			name="Complete a Mylar task">			
525
			<commandParameter 
526
				id="taskHandle" 
527
				name="Unique Task Handle"
528
				optional="false"/>
529
			<commandParameter 
530
				id="complete" 
531
				name="Boolean parameter to set Complete/Incomplete"
532
				optional="true"/>
533
		</command>
422
534
535
    </extension>  
423
  
536
  
424
</plugin>
537
</plugin>
425
538
Lines 433-436 Link Here
433
	  		class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction"
546
	  		class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction"
434
	  		icon="icons/etool16/go-into.gif"
547
	  		icon="icons/etool16/go-into.gif"
435
	  		enablesFor="1"/>
548
	  		enablesFor="1"/>
(-)src/org/eclipse/mylar/internal/tasklist/ui/commands/ActivateTaskHandler.java (+44 lines)
Added Link Here
1
package org.eclipse.mylar.internal.tasklist.ui.commands;
2
3
4
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.tasklist.ITask;
12
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
13
14
/**
15
 * @author Izzet Safer
16
 */
17
public class ActivateTaskHandler extends AbstractHandler {
18
19
	@Override
20
	public Object execute(ExecutionEvent event) throws ExecutionException {
21
		final Map parameters = event.getParameters();
22
		final Object taskHandle = parameters.get("taskHandle");
23
		final Object paramActivate = parameters.get("activate");		
24
		boolean activate = (paramActivate == null) ? true : Boolean.parseBoolean(paramActivate.toString());
25
	
26
		if (taskHandle == null) {
27
			return null;
28
		} else {			
29
			ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(taskHandle.toString());
30
			if (task != null) {
31
				if (activate) {
32
					MylarTaskListPlugin.getTaskListManager().activateTask(task);
33
				}
34
				else {
35
					MylarTaskListPlugin.getTaskListManager().deactivateTask(task);
36
				}
37
			}
38
			
39
			TaskListView.getFromActivePerspective().getViewer().refresh();
40
			
41
			return Boolean.valueOf(activate).toString();
42
		}
43
	}
44
}
(-)src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalSubTaskHandler.java (+87 lines)
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.ITask;
13
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
14
import org.eclipse.mylar.provisional.tasklist.Task;
15
import org.eclipse.mylar.provisional.tasklist.TaskList;
16
17
/**
18
 * @author Izzet Safer
19
 */
20
public class NewLocalSubTaskHandler extends AbstractHandler {
21
22
	@Override
23
	public Object execute(ExecutionEvent event) throws ExecutionException {
24
		final Map parameters = event.getParameters();
25
		final Object taskName = parameters.get("taskName");
26
		// assign a unique handle when null
27
		final Object taskHandle = parameters.get("taskHandle");
28
		final Object parentHandle = parameters.get("parentHandle");
29
		// if taskHandle is not null and already exists, don't create a new task, use the existing		
30
		final Object useExisting = parameters.get("useExisting");		
31
		final Object activateTask = parameters.get("activateTask");
32
		// delete the context associated with the task if an existing task is used
33
		final Object resetContext = parameters.get("resetContext");
34
		
35
		if (taskName == null || parentHandle == null) {
36
			return null;
37
		} else {
38
			return createNewLocalSubTask(taskName.toString(), taskHandle, parentHandle.toString(),
39
					useExisting == null ? true : Boolean.parseBoolean((String)useExisting),
40
					activateTask == null ? true : Boolean.parseBoolean((String)activateTask), 
41
					resetContext == null ? false : Boolean.parseBoolean((String)resetContext));
42
		}
43
	}
44
	
45
	private Object createNewLocalSubTask(String taskName, Object taskHandle, String parentHandle,
46
			boolean useExisting, boolean activateTask, boolean resetContext) {
47
48
		TaskList tl = MylarTaskListPlugin.getTaskListManager().getTaskList();
49
		
50
		ITask parentTask = tl.getTask(parentHandle);
51
		if (parentTask == null) return null;		
52
			
53
		ITask newTask = null;
54
		
55
		String sHandle;
56
		if (taskHandle == null) {
57
			sHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle();			
58
		}
59
		else {
60
			sHandle = taskHandle.toString();
61
			if (useExisting) {
62
				newTask = tl.getTask(sHandle);
63
			}
64
			else {
65
				// if a task handle is given and use existing is false 
66
				// (a pretty non-usual combination) force the context to be deleted
67
				resetContext = true;
68
			}
69
		}
70
		
71
		if (newTask == null) { 			
72
			newTask = new Task(sHandle, taskName, true);				
73
			Calendar reminderCalendar = GregorianCalendar.getInstance();
74
			MylarTaskListPlugin.getTaskListManager().setScheduledToday(reminderCalendar);
75
			MylarTaskListPlugin.getTaskListManager().setReminder(newTask, reminderCalendar.getTime());
76
77
			parentTask.addSubTask(newTask);
78
		}
79
		
80
		if (resetContext) MylarPlugin.getContextManager().deleteContext(sHandle);		
81
		if (activateTask) MylarTaskListPlugin.getTaskListManager().activateTask(newTask);		
82
		
83
		TaskListView.getFromActivePerspective().getViewer().refresh();
84
		
85
		return sHandle;
86
	}
87
}
(-)src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalTaskHandler.java (+104 lines)
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
}
(-)src/org/eclipse/mylar/internal/tasklist/ui/commands/MarkTaskCompleteHandler.java (+39 lines)
Added Link Here
1
package org.eclipse.mylar.internal.tasklist.ui.commands;
2
3
4
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.tasklist.ITask;
12
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
13
14
/**
15
 * @author Izzet Safer
16
 */
17
public class MarkTaskCompleteHandler extends AbstractHandler {
18
19
	@Override
20
	public Object execute(ExecutionEvent event) throws ExecutionException {
21
		final Map parameters = event.getParameters();
22
		final Object taskHandle = parameters.get("taskHandle");
23
		final Object paramComplete = parameters.get("complete");		
24
		boolean complete = (paramComplete == null) ? true : Boolean.parseBoolean(paramComplete.toString());
25
	
26
		if (taskHandle == null) {
27
			return null;
28
		} else {			
29
			ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(taskHandle.toString());
30
			if (task != null) {
31
				MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(task, complete);
32
			}
33
			
34
			TaskListView.getFromActivePerspective().getViewer().refresh();
35
			
36
			return Boolean.valueOf(complete).toString();
37
		}
38
	}
39
}

Return to bug 145884