diff options
author | relves | 2011-03-03 04:31:56 +0000 |
---|---|---|
committer | relves | 2011-03-03 04:31:56 +0000 |
commit | c6199eb84a3f25a9acb7985a4d4f8d497c15b37d (patch) | |
tree | 5e4d2d7eb17ab045922678dff496604d0640ab77 /org.eclipse.mylyn.tasks.core | |
parent | 7f0b86d3bf0589c39d21413867ef9e067e51ba9f (diff) | |
download | org.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.tar.gz org.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.tar.xz org.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.zip |
338763: [api] support propagating data object to ITaskDataManagerListener
https://bugs.eclipse.org/bugs/show_bug.cgi?id=338763
Diffstat (limited to 'org.eclipse.mylyn.tasks.core')
7 files changed, 48 insertions, 21 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java index e71965989..a96fadcc4 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java @@ -25,6 +25,8 @@ import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.core.runtime.Status; +import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor; +import org.eclipse.mylyn.commons.core.IDelegatingProgressMonitor; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.ITaskListRunnable; @@ -178,6 +180,11 @@ public class TaskDataManager implements ITaskDataManager { public void putUpdatedTaskData(final ITask itask, final TaskData taskData, final boolean user, Object token) throws CoreException { + putUpdatedTaskData(itask, taskData, user, null, null); + } + + public void putUpdatedTaskData(final ITask itask, final TaskData taskData, final boolean user, Object token, + IProgressMonitor monitor) throws CoreException { final AbstractTask task = (AbstractTask) itask; Assert.isNotNull(task); Assert.isNotNull(taskData); @@ -187,6 +194,10 @@ public class TaskDataManager implements ITaskDataManager { final boolean taskDataChanged = connector.hasTaskChanged(repository, task, taskData); final TaskDataManagerEvent event = new TaskDataManagerEvent(this, itask, taskData, token); event.setTaskDataChanged(taskDataChanged); + IDelegatingProgressMonitor delegatingMonitor = DelegatingProgressMonitor.getMonitorFrom(monitor); + if (delegatingMonitor != null) { + event.setData(delegatingMonitor.getData()); + } final boolean[] synchronizationStateChanged = new boolean[1]; if (taskDataChanged || user) { taskList.run(new ITaskListRunnable() { @@ -407,7 +418,8 @@ public class TaskDataManager implements ITaskDataManager { return findFile(task, kind).exists(); } - public void putSubmittedTaskData(final ITask itask, final TaskData taskData) throws CoreException { + public void putSubmittedTaskData(final ITask itask, final TaskData taskData, IDelegatingProgressMonitor monitor) + throws CoreException { final AbstractTask task = (AbstractTask) itask; Assert.isNotNull(task); Assert.isNotNull(taskData); @@ -416,6 +428,7 @@ public class TaskDataManager implements ITaskDataManager { task.getRepositoryUrl()); final TaskDataManagerEvent event = new TaskDataManagerEvent(this, itask, taskData, null); event.setTaskDataChanged(true); + event.setData(((DelegatingProgressMonitor) monitor).getData()); taskList.run(new ITaskListRunnable() { public void execute(IProgressMonitor monitor) throws CoreException { if (!taskData.isPartial()) { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java index 1cd4196ba..859f9b9fc 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java @@ -25,6 +25,8 @@ public class TaskDataManagerEvent extends EventObject { private static final long serialVersionUID = 1L; + private Object data; + private final ITask task; private boolean taskChanged; @@ -37,6 +39,14 @@ public class TaskDataManagerEvent extends EventObject { private final Object token; + public TaskDataManagerEvent(ITaskDataManager source, ITask task) { + super(source); + Assert.isNotNull(task); + this.task = task; + this.taskData = null; + this.token = null; + } + public TaskDataManagerEvent(ITaskDataManager source, ITask task, TaskData taskData, Object token) { super(source); Assert.isNotNull(task); @@ -46,12 +56,8 @@ public class TaskDataManagerEvent extends EventObject { this.token = token; } - public TaskDataManagerEvent(ITaskDataManager source, ITask task) { - super(source); - Assert.isNotNull(task); - this.task = task; - this.taskData = null; - this.token = null; + public Object getData() { + return data; } public ITask getTask() { @@ -78,6 +84,10 @@ public class TaskDataManagerEvent extends EventObject { return token; } + public void setData(Object data) { + this.data = data; + } + public void setTaskChanged(boolean taskChanged) { this.taskChanged = taskChanged; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java index d65b7f475..c7df9ffaa 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java @@ -94,7 +94,7 @@ public class SubmitTaskJob extends SubmitJob { TaskData updatedTaskData = connector.getTaskData(taskRepository, taskId, Policy.subMonitorFor(monitor, 100)); task = createTask(monitor, updatedTaskData); - taskDataManager.putSubmittedTaskData(task, updatedTaskData); + taskDataManager.putSubmittedTaskData(task, updatedTaskData, monitor); fireTaskSynchronized(monitor); } catch (CoreException e) { errorStatus = e.getStatus(); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java index 8e15390a0..54adc439f 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java @@ -173,7 +173,7 @@ public class SynchronizeQueriesJob extends SynchronizationJob { @Override public void putTaskData(ITask task, TaskData taskData) throws CoreException { boolean changed = connector.hasTaskChanged(repository, task, taskData); - taskDataManager.putUpdatedTaskData(task, taskData, isUser(), this); + taskDataManager.putUpdatedTaskData(task, taskData, isUser(), this, monitor); if (taskData.isPartial()) { if (changed && connector.canSynchronizeTask(repository, task)) { markStale(task); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java index 3348f171d..bee3c788f 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java @@ -194,6 +194,9 @@ public class SynchronizeTasksJob extends SynchronizationJob { } private void runInternal(Set<ITask> tasks, IProgressMonitor monitor) { + if (!isUser()) { + monitor = Policy.backgroundMonitorFor(monitor); + } try { monitor.beginTask(Messages.SynchronizeTasksJob_Processing, tasks.size() * 100); if (canGetMultiTaskData(taskRepository)) { @@ -241,7 +244,7 @@ public class SynchronizeTasksJob extends SynchronizationJob { String taskId = task.getTaskId(); TaskData taskData = connector.getTaskData(taskRepository, taskId, monitor); if (taskData != null) { - updateFromTaskData(taskRepository, task, taskData); + updateFromTaskData(taskRepository, task, taskData, monitor); return; } throw new CoreException(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, @@ -256,7 +259,7 @@ public class SynchronizeTasksJob extends SynchronizationJob { TaskData taskData = connector.getTaskData(taskRepository, taskId, monitor); if (taskData != null) { - return createFromTaskData(taskRepository, taskId, taskData); + return createFromTaskData(taskRepository, taskId, taskData, monitor); } throw new CoreException(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, @@ -270,7 +273,7 @@ public class SynchronizeTasksJob extends SynchronizationJob { } } - private void synchronizeTasks(IProgressMonitor monitor, final TaskRepository repository, Set<ITask> tasks) + private void synchronizeTasks(final IProgressMonitor monitor, final TaskRepository repository, Set<ITask> tasks) throws CoreException { monitor.subTask(MessageFormat.format(Messages.SynchronizeTasksJob_Receiving_X_tasks_from_X, tasks.size(), repository.getRepositoryLabel())); @@ -285,7 +288,7 @@ public class SynchronizeTasksJob extends SynchronizationJob { public void accept(TaskData taskData) { ITask task = idToTask.remove(taskData.getTaskId()); if (task != null) { - updateFromTaskData(repository, task, taskData); + updateFromTaskData(repository, task, taskData, monitor); } } @@ -298,16 +301,15 @@ public class SynchronizeTasksJob extends SynchronizationJob { } }; - if (!isUser()) { - monitor = Policy.backgroundMonitorFor(monitor); - } Set<String> taskIds = Collections.unmodifiableSet(new HashSet<String>(idToTask.keySet())); connector.getTaskDataHandler().getMultiTaskData(repository, taskIds, collector, monitor); } - private void updateFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) { + private void updateFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData, + IProgressMonitor monitor) { try { - taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession()); + + taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession(), monitor); if (updateRelations) { Collection<TaskRelation> relations = connector.getTaskRelations(taskData); if (relations != null) { @@ -319,11 +321,11 @@ public class SynchronizeTasksJob extends SynchronizationJob { } } - private ITask createFromTaskData(TaskRepository taskRepository, String taskId, TaskData taskData) - throws CoreException { + private ITask createFromTaskData(TaskRepository taskRepository, String taskId, TaskData taskData, + IProgressMonitor monitor) throws CoreException { ITask task = tasksModel.createTask(taskRepository, taskData.getTaskId()); ((AbstractTask) task).setSynchronizationState(SynchronizationState.INCOMING_NEW); - taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession()); + taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession(), monitor); return task; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java index 77e7addb5..4cc00d282 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java @@ -37,6 +37,7 @@ public abstract class SynchronizationJob extends Job { public SynchronizationJob(String name) { super(name); this.monitor = new DelegatingProgressMonitor(); + this.monitor.setData(this); } // public boolean isChangedTasksSynchronization() { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java index 47d95d0d0..91dd8f4b3 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java @@ -33,6 +33,7 @@ public abstract class TaskJob extends Job { public TaskJob(String name) { super(name); this.monitor = new DelegatingProgressMonitor(); + this.monitor.setData(this); } /** |