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 (+93 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
    </extension>
439
  
440
  	<extension point="org.eclipse.ui.commands">
441
		<command 
442
			description="Add new Mylar Task"
443
			id="org.eclipse.mylar.tasklist.commands.addNewLocalTask"
444
			name="Add new Mylar Task">
445
			<commandParameter 
446
				id="taskName" 
447
				name="Task Name"
448
				optional="false"/>
449
			<commandParameter 
450
				id="taskHandle" 
451
				name="Unique Task Handle"
452
				optional="true"/>
453
			<commandParameter 
454
				id="useExisting" 
455
				name="Boolean parameter to use the existing task if taskHandle exists"
456
				optional="true"/>
457
			<commandParameter 
458
				id="categoryName" 
459
				name="Category Name"
460
				optional="true"/>
461
			<commandParameter 
462
				id="activateTask" 
463
				name="Boolean parameter to activate the task"
464
				optional="true"/>
465
			<commandParameter 
466
				id="resetContext" 
467
				name="Boolean parameter to delete the context of the existing task"
468
				optional="true"/>
469
		</command>
470
	
471
		<command 
472
			description="Add new Mylar Subtask"
473
			id="org.eclipse.mylar.tasklist.commands.addNewLocalSubTask"
474
			name="Add new Mylar Subtask">
475
			<commandParameter 
476
				id="taskName" 
477
				name="Subtask Name"
478
				optional="false"/>
479
			<commandParameter 
480
				id="taskHandle" 
481
				name="Unique Task Handle"
482
				optional="true"/>
483
			<commandParameter 
484
				id="parentHandle" 
485
				name="Handle to parent task"
486
				optional="false"/>
487
			<commandParameter 
488
				id="useExisting" 
489
				name="Boolean parameter to use the existing subtask if taskHandle exists"
490
				optional="true"/>
491
			<commandParameter 
492
				id="activateTask" 
493
				name="Boolean parameter to activate the subtask"
494
				optional="true"/>
495
			<commandParameter 
496
				id="resetContext" 
497
				name="Boolean parameter to delete the context of the existing subtask"
498
				optional="true"/>
499
		</command>
500
501
		<command 
502
			description="Activate/Deactivate a Mylar task"
503
			id="org.eclipse.mylar.tasklist.commands.activateTask"
504
			name="ISAR Activate a Mylar task">			
505
			<commandParameter 
506
				id="taskHandle" 
507
				name="Unique Task Handle"
508
				optional="false"/>
509
			<commandParameter 
510
				id="activate" 
511
				name="Boolean parameter to Activate/Deactivate"
512
				optional="true"/>
513
		</command>
422
514
515
    </extension>  
423
  
516
  
424
</plugin>
517
</plugin>
425
518
Lines 433-436 Link Here
433
	  		class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction"
526
	  		class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction"
434
	  		icon="icons/etool16/go-into.gif"
527
	  		icon="icons/etool16/go-into.gif"
435
	  		enablesFor="1"/>
528
	  		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 (+99 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) MylarPlugin.getContextManager().deleteContext(sHandle);		
93
		if (activateTask) MylarTaskListPlugin.getTaskListManager().activateTask(newTask);		
94
		
95
		TaskListView.getFromActivePerspective().getViewer().refresh();
96
		
97
		return sHandle;
98
	}
99
}

Return to bug 145884