Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 44963 Details for
Bug 145884
creating command handlers to manipulate tasks list elements
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Commands to add, activate, mark complete tasks and subtasks delegated to existing actions
patch.txt (text/plain), 33.60 KB, created by
Izzet Safer
on 2006-06-20 19:31:08 EDT
(
hide
)
Description:
Commands to add, activate, mark complete tasks and subtasks delegated to existing actions
Filename:
MIME Type:
Creator:
Izzet Safer
Created:
2006-06-20 19:31:08 EDT
Size:
33.60 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.tasklist >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasklist/plugin.xml,v >retrieving revision 1.114 >diff -u -r1.114 plugin.xml >--- plugin.xml 17 Jun 2006 02:29:40 -0000 1.114 >+++ plugin.xml 20 Jun 2006 23:23:32 -0000 >@@ -419,7 +419,112 @@ > id="org.eclipse.mylar.tasklist.hyperlinkLister.task" > type="task"/> > </extension>--> >+ >+ <extension point="org.eclipse.ui.handlers"> >+ <handler >+ commandId="org.eclipse.mylar.tasklist.commands.addNewLocalTask" >+ class="org.eclipse.mylar.internal.tasklist.ui.commands.NewLocalTaskHandler"> >+ </handler> >+ >+ <handler >+ commandId="org.eclipse.mylar.tasklist.commands.addNewLocalSubTask" >+ class="org.eclipse.mylar.internal.tasklist.ui.commands.NewLocalSubTaskHandler"> >+ </handler> >+ >+ <handler >+ commandId="org.eclipse.mylar.tasklist.commands.activateTask" >+ class="org.eclipse.mylar.internal.tasklist.ui.commands.TaskActivateHandler"> >+ </handler> >+ >+ <handler >+ commandId="org.eclipse.mylar.tasklist.commands.completeTask" >+ class="org.eclipse.mylar.internal.tasklist.ui.commands.MarkTaskCompleteHandler"> >+ </handler> >+ >+ </extension> >+ >+ <extension point="org.eclipse.ui.commands"> >+ <command >+ description="Add new Mylar Task" >+ id="org.eclipse.mylar.tasklist.commands.addNewLocalTask" >+ name="Add new Mylar Task"> >+ <commandParameter >+ id="taskName" >+ name="Task Name" >+ optional="false"/> >+ <commandParameter >+ id="taskHandle" >+ name="Unique Task Handle" >+ optional="true"/> >+ <commandParameter >+ id="categoryName" >+ name="Category Name" >+ optional="true"/> >+ <commandParameter >+ id="activateTask" >+ name="Boolean parameter to activate the task" >+ optional="true"/> >+ <commandParameter >+ id="resetContext" >+ name="Boolean parameter to delete the context of the existing task" >+ optional="true"/> >+ </command> >+ >+ <command >+ description="Add new Mylar Subtask" >+ id="org.eclipse.mylar.tasklist.commands.addNewLocalSubTask" >+ name="Add new Mylar Subtask"> >+ <commandParameter >+ id="taskName" >+ name="Subtask Name" >+ optional="false"/> >+ <commandParameter >+ id="taskHandle" >+ name="Unique Task Handle" >+ optional="true"/> >+ <commandParameter >+ id="parentHandle" >+ name="Handle to parent task" >+ optional="false"/> >+ <commandParameter >+ id="activateTask" >+ name="Boolean parameter to activate the subtask" >+ optional="true"/> >+ <commandParameter >+ id="resetContext" >+ name="Boolean parameter to delete the context of the existing subtask" >+ optional="true"/> >+ </command> >+ >+ <command >+ description="Activate/Deactivate a Mylar task" >+ id="org.eclipse.mylar.tasklist.commands.activateTask" >+ name="Activate a Mylar task"> >+ <commandParameter >+ id="taskHandle" >+ name="Unique Task Handle" >+ optional="false"/> >+ <commandParameter >+ id="activateTask" >+ name="Boolean parameter to Activate/Deactivate" >+ optional="true"/> >+ </command> >+ >+ <command >+ description="Mark Complete/Incomplete a Mylar task" >+ id="org.eclipse.mylar.tasklist.commands.completeTask" >+ name="Complete a Mylar task"> >+ <commandParameter >+ id="taskHandle" >+ name="Unique Task Handle" >+ optional="false"/> >+ <commandParameter >+ id="completeTask" >+ name="Boolean parameter to set Complete/Incomplete" >+ optional="true"/> >+ </command> > >+ </extension> > > </plugin> > >@@ -433,4 +538,4 @@ > class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction" > icon="icons/etool16/go-into.gif" > enablesFor="1"/> >---> >+--> >\ No newline at end of file >Index: src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskIncompleteAction.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasklist/src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskIncompleteAction.java,v >retrieving revision 1.6 >diff -u -r1.6 MarkTaskIncompleteAction.java >--- src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskIncompleteAction.java 12 Mar 2006 23:49:43 -0000 1.6 >+++ src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskIncompleteAction.java 20 Jun 2006 23:23:32 -0000 >@@ -19,7 +19,7 @@ > import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; > > /** >- * @author Mik Kersten and Ken Sueda >+ * @author Mik Kersten, Ken Sueda and Izzet Safer > */ > public class MarkTaskIncompleteAction extends Action { > >@@ -27,6 +27,10 @@ > > private final TaskListView view; > >+ public MarkTaskIncompleteAction() { >+ this(TaskListView.getFromActivePerspective()); >+ } >+ > public MarkTaskIncompleteAction(TaskListView view) { > this.view = view; > setText("Mark Incomplete"); >@@ -39,8 +43,16 @@ > public void run() { > for (Object selectedObject : ((IStructuredSelection) this.view.getViewer().getSelection()).toList()) { > if (selectedObject instanceof ITask) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(((ITask) selectedObject), false); >+ markIncomplete((ITask)selectedObject); > } > } > } >+ >+ public void run(ITask task) { >+ markIncomplete(task); >+ } >+ >+ private void markIncomplete(ITask task) { >+ MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(task, false); >+ } > } >Index: src/org/eclipse/mylar/internal/tasklist/ui/actions/NewCategoryAction.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasklist/src/org/eclipse/mylar/internal/tasklist/ui/actions/NewCategoryAction.java,v >retrieving revision 1.9 >diff -u -r1.9 NewCategoryAction.java >--- src/org/eclipse/mylar/internal/tasklist/ui/actions/NewCategoryAction.java 13 Mar 2006 03:09:36 -0000 1.9 >+++ src/org/eclipse/mylar/internal/tasklist/ui/actions/NewCategoryAction.java 20 Jun 2006 23:23:32 -0000 >@@ -21,7 +21,7 @@ > import org.eclipse.ui.PlatformUI; > > /** >- * @author Mik Kersten and Ken Sueda >+ * @author Mik Kersten, Ken Sueda and Izzet Safer > */ > public class NewCategoryAction extends Action { > >@@ -43,9 +43,17 @@ > "Enter name", "Enter a name for the Category: ", "", null); > int dialogResult = dialog.open(); > if (dialogResult == Window.OK) { >- TaskCategory cat = new TaskCategory(dialog.getValue(), MylarTaskListPlugin.getTaskListManager().getTaskList()); >- MylarTaskListPlugin.getTaskListManager().getTaskList().addCategory(cat); >- this.view.getViewer().refresh(); >+ addCategory(dialog.getValue()); > } > } >+ >+ public void run(String categoryName) { >+ addCategory(categoryName); >+ } >+ >+ private void addCategory(String categoryName) { >+ TaskCategory cat = new TaskCategory(categoryName, MylarTaskListPlugin.getTaskListManager().getTaskList()); >+ MylarTaskListPlugin.getTaskListManager().getTaskList().addCategory(cat); >+ this.view.getViewer().refresh(); >+ } > } >Index: src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskCompleteAction.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasklist/src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskCompleteAction.java,v >retrieving revision 1.6 >diff -u -r1.6 MarkTaskCompleteAction.java >--- src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskCompleteAction.java 12 Mar 2006 23:49:43 -0000 1.6 >+++ src/org/eclipse/mylar/internal/tasklist/ui/actions/MarkTaskCompleteAction.java 20 Jun 2006 23:23:32 -0000 >@@ -19,7 +19,7 @@ > import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; > > /** >- * @author Mik Kersten >+ * @author Mik Kersten and Izzet Safer > */ > public class MarkTaskCompleteAction extends Action { > >@@ -27,6 +27,10 @@ > > private final TaskListView view; > >+ public MarkTaskCompleteAction() { >+ this(TaskListView.getFromActivePerspective()); >+ } >+ > public MarkTaskCompleteAction(TaskListView view) { > this.view = view; > setText("Mark Complete"); >@@ -39,8 +43,16 @@ > public void run() { > for (Object selectedObject : ((IStructuredSelection) this.view.getViewer().getSelection()).toList()) { > if (selectedObject instanceof ITask) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(((ITask) selectedObject), true); >+ markComplete((ITask)selectedObject); > } > } > } >+ >+ public void run(ITask task) { >+ markComplete(task); >+ } >+ >+ private void markComplete(ITask task) { >+ MylarTaskListPlugin.getTaskListManager().getTaskList().markComplete(task, true); >+ } > } >Index: src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalTaskAction.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasklist/src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalTaskAction.java,v >retrieving revision 1.28 >diff -u -r1.28 NewLocalTaskAction.java >--- src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalTaskAction.java 16 Jun 2006 23:20:45 -0000 1.28 >+++ src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalTaskAction.java 20 Jun 2006 23:23:32 -0000 >@@ -21,6 +21,7 @@ > import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil; > import org.eclipse.mylar.internal.tasklist.ui.views.TaskInputDialog; > import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; >+import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; > import org.eclipse.mylar.provisional.tasklist.ITask; > import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; > import org.eclipse.mylar.provisional.tasklist.Task; >@@ -28,7 +29,7 @@ > import org.eclipse.swt.widgets.Display; > > /** >- * @author Mik Kersten >+ * @author Mik Kersten and Izzet Safer > */ > public class NewLocalTaskAction extends Action { > >@@ -38,6 +39,12 @@ > > private final TaskListView view; > >+ private Task newTask; >+ >+ public NewLocalTaskAction() { >+ this(TaskListView.getFromActivePerspective()); >+ } >+ > public NewLocalTaskAction(TaskListView view) { > this.view = view; > setText(TaskInputDialog.LABEL_SHELL); >@@ -47,51 +54,83 @@ > } > > @Override >- public void run() { >- Task newTask = new Task(MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(), DESCRIPTION_DEFAULT, true); >-// newTask.setUrl(getDefaultIssueURL()); >+ public void run() { >+ String taskHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(); >+ AbstractTaskContainer category = null; > >- Calendar reminderCalendar = GregorianCalendar.getInstance(); >- MylarTaskListPlugin.getTaskListManager().setScheduledToday(reminderCalendar); >- MylarTaskListPlugin.getTaskListManager().setReminder(newTask, reminderCalendar.getTime()); >- >+ boolean showWarning = false; > Object selectedObject = ((IStructuredSelection) view.getViewer().getSelection()).getFirstElement(); >- >+ > if (selectedObject instanceof TaskCategory) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, (TaskCategory) selectedObject); >+ category = (TaskCategory) selectedObject; > } else if (selectedObject instanceof ITask) { > ITask task = (ITask) selectedObject; > if (task.getContainer() instanceof TaskCategory) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, >- (TaskCategory) task.getContainer()); >+ category = (TaskCategory) task.getContainer(); > } else if (view.getDrilledIntoCategory() instanceof TaskCategory) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, >- (TaskCategory) view.getDrilledIntoCategory()); >+ category = (TaskCategory) view.getDrilledIntoCategory(); > } else { >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, >- MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory()); >- // MylarTaskListPlugin.getTaskListManager().getTaskList().moveToRoot(newTask); >+ category = MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory(); > } > } else if (view.getDrilledIntoCategory() instanceof TaskCategory) { >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, >- (TaskCategory) view.getDrilledIntoCategory()); >+ category = (TaskCategory) view.getDrilledIntoCategory(); > } else { >- if (view.getDrilledIntoCategory() != null) { >- MessageDialog.openInformation(Display.getCurrent().getActiveShell(), MylarTaskListPlugin.TITLE_DIALOG, >- "The new task has been added to the root of the list, since tasks can not be added to a query."); >- } >- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, >- MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory()); >+ showWarning = true; >+ category = MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory(); > } >- TaskUiUtil.openEditor(newTask, true); >- // newTask.openTaskInEditor(false); >- view.getViewer().refresh(); >+ >+ addNewLocalTask(taskHandle, DESCRIPTION_DEFAULT, category, true, showWarning); >+ } >+ >+ public void run(String taskHandle, String taskName, String categoryName) { >+ if (taskHandle == null || taskHandle.equals("")) >+ taskHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(); >+ >+ AbstractTaskContainer category = null; >+ if (categoryName == null || categoryName.equals("")) { >+ category = MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory(); >+ } >+ else { >+ category = MylarTaskListPlugin.getTaskListManager().getTaskList().getContainerForHandle(categoryName.toString()); >+ if (category == null) { >+ // the category is not found, create it by calling NewCategoryAction >+ NewCategoryAction action = new NewCategoryAction(this.view); >+ action.run(categoryName.toString()); >+ category = MylarTaskListPlugin.getTaskListManager().getTaskList().getContainerForHandle(categoryName.toString()); >+ } >+ } >+ >+ addNewLocalTask(taskHandle, taskName, category, false, false); >+ } >+ >+ private void addNewLocalTask(String taskHandle, String taskName, AbstractTaskContainer category, boolean edit, boolean showMessage) { >+ newTask = new Task(taskHandle, taskName, true); >+// newTask.setUrl(getDefaultIssueURL()); >+ >+ Calendar reminderCalendar = GregorianCalendar.getInstance(); >+ MylarTaskListPlugin.getTaskListManager().setScheduledToday(reminderCalendar); >+ MylarTaskListPlugin.getTaskListManager().setReminder(newTask, reminderCalendar.getTime()); > >+ if (showMessage) { >+ MessageDialog.openInformation(Display.getCurrent().getActiveShell(), MylarTaskListPlugin.TITLE_DIALOG, >+ "The new task has been added to the root of the list, since tasks can not be added to a query."); >+ } >+ MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, category); > >- view.setInRenameAction(true); >- view.getViewer().editElement(newTask, 4); >- view.setInRenameAction(false); >+ view.getViewer().refresh(); >+ >+ if (edit) { >+ TaskUiUtil.openEditor(newTask, true); >+ // newTask.openTaskInEditor(false); >+ view.setInRenameAction(true); >+ view.getViewer().editElement(newTask, 4); >+ view.setInRenameAction(false); >+ } > // view.getViewer().setSelection(new StructuredSelection(newTask)); > // } > } >+ >+ public ITask getNewTask() { >+ return newTask; >+ } > } >Index: src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalSubTaskHandler.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalSubTaskHandler.java >diff -N src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalSubTaskHandler.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalSubTaskHandler.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,100 @@ >+package org.eclipse.mylar.internal.tasklist.ui.commands; >+ >+import java.util.Collection; >+import java.util.Map; >+ >+import org.eclipse.core.commands.AbstractHandler; >+import org.eclipse.core.commands.ExecutionEvent; >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.mylar.internal.tasklist.ui.actions.MarkTaskIncompleteAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.NewLocalSubTaskAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskActivateAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskDeactivateAction; >+import org.eclipse.mylar.provisional.core.MylarPlugin; >+import org.eclipse.mylar.provisional.tasklist.ITask; >+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; >+ >+/** >+ * @author Izzet Safer >+ */ >+public class NewLocalSubTaskHandler extends AbstractHandler { >+ >+ private static final String PARAMETER_TASK_NAME_ID = "taskName"; //$NON-NLS-1$ >+ private static final String PARAMETER_TASK_HANDLE_ID = "taskHandle"; //$NON-NLS-1$ >+ private static final String PARAMETER_PARENT_HANDLE_ID = "parentHandle"; //$NON-NLS-1$ >+ private static final String PARAMETER_ACTIVATE_TASK_ID = "activateTask"; //$NON-NLS-1$ >+ private static final String PARAMETER_RESET_CONTEXT_ID = "resetContext"; //$NON-NLS-1$ >+ >+ private NewLocalSubTaskAction newAction = null; >+ private TaskActivateAction activateAction = null; >+ private TaskDeactivateAction deactivateAction = null; >+ private MarkTaskIncompleteAction incompleteAction = null; >+ >+ public NewLocalSubTaskHandler () { >+ newAction = new NewLocalSubTaskAction(); >+ activateAction = new TaskActivateAction(); >+ deactivateAction = new TaskDeactivateAction(); >+ incompleteAction = new MarkTaskIncompleteAction(); >+ } >+ >+ @Override >+ public Object execute(ExecutionEvent event) throws ExecutionException { >+ Object returnValue = null; >+ final Map parameters = event.getParameters(); >+ >+ final Object taskName = parameters.get(PARAMETER_TASK_NAME_ID); >+ // if task handle is not null and a task with that handle already exists, >+ // that task will be used and no new task will be created >+ final Object taskHandle = parameters.get(PARAMETER_TASK_HANDLE_ID); >+ >+ final Object parentHandle = parameters.get(PARAMETER_PARENT_HANDLE_ID); >+ >+ final boolean activateTask = parameters.get(PARAMETER_ACTIVATE_TASK_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_ACTIVATE_TASK_ID)); >+ >+ // delete the context associated with the task if an existing task is used >+ final boolean resetContext = parameters.get(PARAMETER_RESET_CONTEXT_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_RESET_CONTEXT_ID)); >+ >+ if (taskName == null || parentHandle == null) { >+ return returnValue; >+ } else { >+ ITask newSubTask = null; >+ if (taskHandle != null) { >+ Collection<ITask> allTasks = MylarTaskListPlugin.getTaskListManager().getTaskList().getAllTasks(); >+ newSubTask = findSubtaskWithHandle(allTasks, (String)taskHandle); >+ if (newSubTask != null && resetContext) { >+ //TODO: do this using ContextClearAction >+ MylarPlugin.getContextManager().deleteContext(newSubTask.getHandleIdentifier()); >+ //TODO: call DeleteAction to delete the subtasks of this task, or just >+ //delete subtasks' context >+ //newTask.getChildren().clear(); >+ incompleteAction.run(newSubTask); >+ } >+ } >+ >+ if (newSubTask == null) { >+ newAction.run(taskHandle == null ? "" : (String)taskHandle, >+ (String)taskName, (String)parentHandle); >+ newSubTask = newAction.getNewSubTask(); >+ } >+ >+ // fail.. no new sub task created >+ if (newSubTask == null) return returnValue; >+ >+ if (activateTask) activateAction.run(newSubTask); >+ else deactivateAction.run(newSubTask); >+ >+ } >+ >+ return returnValue; >+ } >+ >+ private ITask findSubtaskWithHandle(Collection<ITask> tasks, String taskHandle) { >+ for (ITask t : tasks) { >+ if (t.getHandleIdentifier().equals(taskHandle)) return t; >+ findSubtaskWithHandle(t.getChildren(), taskHandle); >+ } >+ return null; >+ } >+} >Index: src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalTaskHandler.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalTaskHandler.java >diff -N src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalTaskHandler.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasklist/ui/commands/NewLocalTaskHandler.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,92 @@ >+package org.eclipse.mylar.internal.tasklist.ui.commands; >+ >+import java.util.Map; >+ >+import org.eclipse.core.commands.AbstractHandler; >+import org.eclipse.core.commands.ExecutionEvent; >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.mylar.internal.tasklist.ui.actions.MarkTaskIncompleteAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.NewLocalTaskAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskActivateAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskDeactivateAction; >+import org.eclipse.mylar.provisional.core.MylarPlugin; >+import org.eclipse.mylar.provisional.tasklist.ITask; >+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; >+ >+/** >+ * @author Izzet Safer >+ */ >+public class NewLocalTaskHandler extends AbstractHandler { >+ >+ private static final String PARAMETER_TASK_NAME_ID = "taskName"; //$NON-NLS-1$ >+ private static final String PARAMETER_TASK_HANDLE_ID = "taskHandle"; //$NON-NLS-1$ >+ private static final String PARAMETER_CATEGORY_NAME_ID = "categoryName"; //$NON-NLS-1$ >+ private static final String PARAMETER_ACTIVATE_TASK_ID = "activateTask"; //$NON-NLS-1$ >+ private static final String PARAMETER_RESET_CONTEXT_ID = "resetContext"; //$NON-NLS-1$ >+ >+ private NewLocalTaskAction newAction = null; >+ private TaskActivateAction activateAction = null; >+ private TaskDeactivateAction deactivateAction = null; >+ private MarkTaskIncompleteAction incompleteAction = null; >+ >+ public NewLocalTaskHandler () { >+ newAction = new NewLocalTaskAction(); >+ activateAction = new TaskActivateAction(); >+ deactivateAction = new TaskDeactivateAction(); >+ incompleteAction = new MarkTaskIncompleteAction(); >+ } >+ >+ @Override >+ public Object execute(ExecutionEvent event) throws ExecutionException { >+ Object returnValue = null; >+ final Map parameters = event.getParameters(); >+ >+ final Object taskName = parameters.get(PARAMETER_TASK_NAME_ID); >+ // if task handle is not null and a task with that handle already exists, >+ // that task will be used and no new task will be created >+ final Object taskHandle = parameters.get(PARAMETER_TASK_HANDLE_ID); >+ >+ // use root when null >+ final Object categoryName = parameters.get(PARAMETER_CATEGORY_NAME_ID); >+ >+ final boolean activateTask = parameters.get(PARAMETER_ACTIVATE_TASK_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_ACTIVATE_TASK_ID)); >+ >+ // delete the context associated with the task if an existing task is used >+ final boolean resetContext = parameters.get(PARAMETER_RESET_CONTEXT_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_RESET_CONTEXT_ID)); >+ >+ if (taskName == null) { >+ return returnValue; >+ } else { >+ ITask newTask = null; >+ if (taskHandle != null) { >+ newTask = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask((String)taskHandle); >+ if (newTask != null && resetContext) { >+ //TODO: do this using ContextClearAction >+ MylarPlugin.getContextManager().deleteContext(newTask.getHandleIdentifier()); >+ //TODO: call DeleteAction to delete the subtasks of this task, or just >+ //delete subtasks' context >+ //newTask.getChildren().clear(); >+ incompleteAction.run(newTask); >+ } >+ } >+ >+ if (newTask == null) { >+ newAction.run(taskHandle == null ? "" : (String)taskHandle, >+ (String)taskName, >+ categoryName == null ? "" : (String)categoryName); >+ newTask = newAction.getNewTask(); >+ } >+ >+ // fail.. no new task created >+ if (newTask == null) return returnValue; >+ >+ if (activateTask) activateAction.run(newTask); >+ else deactivateAction.run(newTask); >+ >+ } >+ >+ return returnValue; >+ } >+} >Index: src/org/eclipse/mylar/internal/tasklist/ui/commands/MarkTaskCompleteHandler.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasklist/ui/commands/MarkTaskCompleteHandler.java >diff -N src/org/eclipse/mylar/internal/tasklist/ui/commands/MarkTaskCompleteHandler.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasklist/ui/commands/MarkTaskCompleteHandler.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,55 @@ >+package org.eclipse.mylar.internal.tasklist.ui.commands; >+ >+ >+ >+import java.util.Map; >+ >+import org.eclipse.core.commands.AbstractHandler; >+import org.eclipse.core.commands.ExecutionEvent; >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.mylar.internal.tasklist.ui.actions.MarkTaskCompleteAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.MarkTaskIncompleteAction; >+import org.eclipse.mylar.provisional.tasklist.ITask; >+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; >+ >+/** >+ * @author Izzet Safer >+ */ >+public class MarkTaskCompleteHandler extends AbstractHandler { >+ >+ private static final String PARAMETER_TASK_HANDLE_ID = "taskHandle"; //$NON-NLS-1$ >+ private static final String PARAMETER_COMPLETE_TASK_ID = "completeTask"; //$NON-NLS-1$ >+ >+ private MarkTaskCompleteAction completeAction = null; >+ private MarkTaskIncompleteAction incompleteAction = null; >+ >+ public MarkTaskCompleteHandler() { >+ completeAction = new MarkTaskCompleteAction(); >+ incompleteAction = new MarkTaskIncompleteAction(); >+ } >+ >+ @Override >+ public Object execute(ExecutionEvent event) throws ExecutionException { >+ final Map parameters = event.getParameters(); >+ final Object taskHandle = parameters.get(PARAMETER_TASK_HANDLE_ID); >+ >+ final boolean completeTask = parameters.get(PARAMETER_COMPLETE_TASK_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_COMPLETE_TASK_ID)); >+ >+ if (taskHandle == null) { >+ return null; >+ } else { >+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(taskHandle.toString()); >+ if (task != null) { >+ if (completeTask) { >+ completeAction.run(task); >+ } >+ else { >+ incompleteAction.run(task); >+ } >+ } >+ >+ return Boolean.valueOf(completeTask).toString(); >+ } >+ } >+} >Index: src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalSubTaskAction.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalSubTaskAction.java >diff -N src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalSubTaskAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasklist/ui/actions/NewLocalSubTaskAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,115 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 University Of British Columbia 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 >+ * >+ * Contributors: >+ * University Of British Columbia - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.mylar.internal.tasklist.ui.actions; >+ >+import java.util.Calendar; >+import java.util.GregorianCalendar; >+ >+import org.eclipse.jface.action.Action; >+import org.eclipse.jface.dialogs.MessageDialog; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; >+import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil; >+import org.eclipse.mylar.internal.tasklist.ui.views.TaskInputDialog; >+import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; >+import org.eclipse.mylar.provisional.tasklist.ITask; >+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; >+import org.eclipse.mylar.provisional.tasklist.Task; >+import org.eclipse.swt.widgets.Display; >+ >+/** >+ * @author Izzet Safer >+ */ >+public class NewLocalSubTaskAction extends Action { >+ >+ public static final String DESCRIPTION_DEFAULT = "new subtask"; >+ >+ public static final String ID = "org.eclipse.mylar.tasklist.actions.create.subtask"; >+ >+ private final TaskListView view; >+ >+ private Task newSubTask; >+ >+ public NewLocalSubTaskAction() { >+ this(TaskListView.getFromActivePerspective()); >+ } >+ >+ public NewLocalSubTaskAction(TaskListView view) { >+ this.view = view; >+ setText(TaskInputDialog.LABEL_SHELL); //TODO change >+ setToolTipText(TaskInputDialog.LABEL_SHELL); //TODO change >+ setId(ID); >+ setImageDescriptor(TaskListImages.TASK_NEW); >+ } >+ >+ @Override >+ public void run() { >+ String taskHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(); >+ ITask parentTask = null; >+ >+ //! allows infinite level of nesting, adding a subtask to another subtask is ok >+ Object selectedObject = ((IStructuredSelection) view.getViewer().getSelection()).getFirstElement(); >+ >+ if (selectedObject instanceof ITask) { >+ parentTask = (ITask) selectedObject; >+ } else { >+ MessageDialog.openInformation(Display.getCurrent().getActiveShell(), MylarTaskListPlugin.TITLE_DIALOG, >+ "The new subtask cannot be added to a category, please choose a task."); >+ newSubTask = null; >+ return; >+ } >+ >+ addNewLocalSubTask(taskHandle, DESCRIPTION_DEFAULT, parentTask, true); >+ } >+ >+ public void run(String taskHandle, String taskName, String parentHandle) { >+ if (taskHandle == null || taskHandle.equals("")) >+ taskHandle = MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(); >+ >+ if (parentHandle == null || parentHandle.equals("")) { >+ newSubTask = null; >+ return; >+ } >+ >+ ITask parentTask = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(parentHandle); >+ if (parentTask == null) return; >+ >+ addNewLocalSubTask(taskHandle, taskName, parentTask, false); >+ } >+ >+ private void addNewLocalSubTask(String taskHandle, String taskName, ITask parentTask, boolean edit) { >+ newSubTask = new Task(taskHandle, taskName, true); >+// newTask.setUrl(getDefaultIssueURL()); >+ >+ Calendar reminderCalendar = GregorianCalendar.getInstance(); >+ MylarTaskListPlugin.getTaskListManager().setScheduledToday(reminderCalendar); >+ MylarTaskListPlugin.getTaskListManager().setReminder(newSubTask, reminderCalendar.getTime()); >+ >+ parentTask.addSubTask(newSubTask); >+ >+ view.getViewer().refresh(); >+ >+ if (edit) { >+ TaskUiUtil.openEditor(newSubTask, true); >+ // newTask.openTaskInEditor(false); >+ view.setInRenameAction(true); >+ view.getViewer().editElement(newSubTask, 4); >+ view.setInRenameAction(false); >+ } >+// view.getViewer().setSelection(new StructuredSelection(newTask)); >+ // } >+ } >+ >+ public ITask getNewSubTask() { >+ return newSubTask; >+ } >+} >Index: src/org/eclipse/mylar/internal/tasklist/ui/commands/TaskActivateHandler.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasklist/ui/commands/TaskActivateHandler.java >diff -N src/org/eclipse/mylar/internal/tasklist/ui/commands/TaskActivateHandler.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasklist/ui/commands/TaskActivateHandler.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,55 @@ >+package org.eclipse.mylar.internal.tasklist.ui.commands; >+ >+ >+ >+import java.util.Map; >+ >+import org.eclipse.core.commands.AbstractHandler; >+import org.eclipse.core.commands.ExecutionEvent; >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskActivateAction; >+import org.eclipse.mylar.internal.tasklist.ui.actions.TaskDeactivateAction; >+import org.eclipse.mylar.provisional.tasklist.ITask; >+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; >+ >+/** >+ * @author Izzet Safer >+ */ >+public class TaskActivateHandler extends AbstractHandler { >+ >+ private static final String PARAMETER_TASK_HANDLE_ID = "taskHandle"; //$NON-NLS-1$ >+ private static final String PARAMETER_ACTIVATE_TASK_ID = "activateTask"; //$NON-NLS-1$ >+ >+ private TaskActivateAction activateAction = null; >+ private TaskDeactivateAction deactivateAction = null; >+ >+ public TaskActivateHandler() { >+ activateAction = new TaskActivateAction(); >+ deactivateAction = new TaskDeactivateAction(); >+ } >+ >+ @Override >+ public Object execute(ExecutionEvent event) throws ExecutionException { >+ final Map parameters = event.getParameters(); >+ final Object taskHandle = parameters.get(PARAMETER_TASK_HANDLE_ID); >+ >+ final boolean activateTask = parameters.get(PARAMETER_ACTIVATE_TASK_ID) == null ? true >+ : Boolean.parseBoolean((String)parameters.get(PARAMETER_ACTIVATE_TASK_ID)); >+ >+ if (taskHandle == null) { >+ return null; >+ } else { >+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(taskHandle.toString()); >+ if (task != null) { >+ if (activateTask) { >+ activateAction.run(task); >+ } >+ else { >+ deactivateAction.run(task); >+ } >+ } >+ >+ return Boolean.valueOf(activateTask).toString(); >+ } >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 145884
:
44854
|
44873
|
44963
|
47037