diff options
39 files changed, 518 insertions, 540 deletions
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java index b6be6b862..9c9862b66 100644 --- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java @@ -24,7 +24,6 @@ import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTaskDataHandler; import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskComment; diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java index c486669d0..6fb2a94f3 100644 --- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java @@ -14,7 +14,6 @@ import org.eclipse.mylyn.internal.bugzilla.core.BugzillaAttributeFactory; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector; import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java index a8f1af2ff..5b3dd79fa 100644 --- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java @@ -17,7 +17,6 @@ import org.eclipse.jface.wizard.Wizard; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaAttributeFactory; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; import org.eclipse.mylyn.internal.bugzilla.ui.BugzillaUiPlugin; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ScheduledTaskDelegate.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ScheduledTaskDelegate.java index c09ec87dc..68dd9dbbd 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ScheduledTaskDelegate.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ScheduledTaskDelegate.java @@ -16,7 +16,6 @@ import java.util.Date; import java.util.Set; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskCategory; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; /** @@ -106,12 +105,9 @@ public class ScheduledTaskDelegate extends AbstractTask { return parent; } -// public void addSubTask(ITask task) { -// task.addSubTask(task); -// } - - public AbstractTaskCategory getCategory() { - return task.getCategory(); + @Override + public Set<AbstractTaskContainer> getParentContainers() { + return task.getParentContainers(); } public Set<AbstractTask> getChildren() { @@ -174,16 +170,18 @@ public class ScheduledTaskDelegate extends AbstractTask { return task.isPastReminder(); } -// public void removeSubTask(ITask task) { -// task.removeSubTask(task); -// } - public void setActive(boolean active) { task.setActive(active); } - public void setCategory(AbstractTaskCategory category) { - task.setCategory(category); + @Override + public void addParentContainer(AbstractTaskContainer container) { + task.addParentContainer(container); + } + + @Override + public void removeParentContainer(AbstractTaskContainer container) { + task.removeParentContainer(container); } public void setCompleted(boolean completed) { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTask.java index 424cb4846..4fb65a10f 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTask.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTask.java @@ -14,6 +14,8 @@ package org.eclipse.mylyn.tasks.core; import java.net.MalformedURLException; import java.net.URL; import java.util.Date; +import java.util.HashSet; +import java.util.Set; import org.eclipse.core.runtime.IStatus; import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil; @@ -48,9 +50,7 @@ public abstract class AbstractTask extends AbstractTaskContainer { private String taskUrl = ""; - - @Deprecated - private AbstractTaskCategory parentCategory = null; + private Set<AbstractTaskContainer> containers = new HashSet<AbstractTaskContainer>(); // ************ Synch **************** @@ -340,18 +340,19 @@ public abstract class AbstractTask extends AbstractTaskContainer { } /** - * Use TaskList for moving tasks between containers - * - * TODO: get rid of this or we should make TaskCategory API. + * Limitation: can currently only add one container. */ - @Deprecated - public void setCategory(AbstractTaskCategory category) { - this.parentCategory = category; + public void addParentContainer(AbstractTaskContainer container) { + containers.clear(); + containers.add(container); } - @Deprecated - public AbstractTaskCategory getCategory() { - return parentCategory; + public void removeParentContainer(AbstractTaskContainer container) { + containers.remove(container); + } + + public Set<AbstractTaskContainer> getParentContainers() { + return containers; } public String getSummary() { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java index cb6ef591b..18572ee23 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java @@ -39,6 +39,29 @@ public abstract class AbstractTaskContainer extends PlatformObject implements Co this.handle = handleAndDescription; } + /** + * Use {@link TaskList} methods instead. + */ + @Deprecated + protected void addChild(AbstractTask task) { + children.add(task); + } + + /** + * Does not delete task from TaskList + */ + @Deprecated + protected void removeChild(AbstractTask task) { + children.remove(task); + } + + /** + * Does not delete tasks from TaskList + */ + public void clear() { + children.clear(); + } + public Set<AbstractTask> getChildren() { return Collections.unmodifiableSet(children); } @@ -75,39 +98,18 @@ public abstract class AbstractTaskContainer extends PlatformObject implements Co this.handle = handle; } - /** - * Use {@link TaskList} methods instead. - */ - @Deprecated - protected void add(AbstractTask task) { - children.add(task); - } - - /** - * Does not delete task from TaskList - */ - @Deprecated - protected void remove(AbstractTask task) { - children.remove(task); - } - - /** - * Does not delete tasks from TaskList - */ - public void clear() { - children.clear(); - } - @Override public int hashCode() { return handle.hashCode(); } - @Deprecated public void setUrl(String url) { this.url = url; } + /** + * @return can be null + */ public String getUrl() { return url; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java index 077ded3dc..10c0f6dee 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java @@ -165,11 +165,12 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { node.setAttribute(KEY_LABEL, stripControlCharacters(task.getSummary())); node.setAttribute(KEY_HANDLE, task.getHandleIdentifier()); - if (task.getCategory() != null) { - if (task.getCategory().getHandleIdentifier().equals(UnfiledCategory.HANDLE)) { + AbstractTaskContainer container = task.getParentContainers().iterator().next(); + if (container != null) { + if (container.getHandleIdentifier().equals(UnfiledCategory.HANDLE)) { node.setAttribute(KEY_CATEGORY, VAL_ROOT); } else { - node.setAttribute(KEY_CATEGORY, task.getCategory().getHandleIdentifier()); + node.setAttribute(KEY_CATEGORY, container.getHandleIdentifier()); } } else { // TODO: if/when subtasks are supported this should be handled @@ -303,7 +304,7 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { Node child = list.item(i); try { // LEGACY: categories used to contain tasks? - category.add(readTask(child, taskList, category, null)); + category.addChild(readTask(child, taskList, category, null)); // boolean read = false; // for (ITaskListExternalizer externalizer : // delegateExternalizers) { @@ -403,8 +404,8 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { taskList.internalAddRootTask(task); } } else if (legacyCategory != null && !(legacyCategory instanceof TaskArchive)) { - task.setCategory(legacyCategory); - legacyCategory.add(task); + task.addParentContainer(legacyCategory); + legacyCategory.addChild(task); } else if (legacyCategory == null && parent == null) { if (task instanceof AbstractTask) { taskList.internalAddTask(task, taskList.getArchiveContainer()); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java index f1b4cf740..b12af7eeb 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java @@ -11,6 +11,8 @@ package org.eclipse.mylyn.tasks.core; +import java.util.Set; + /** * Listener for task list modifications and task content modifications. @@ -19,32 +21,6 @@ package org.eclipse.mylyn.tasks.core; */ public interface ITaskListChangeListener { - /** - * called when task changes state (incoming/outgoing/synchronizing...) - */ - public abstract void localInfoChanged(AbstractTask task); - - /** - * Called when task data (repository task data or edits) have changed - * TODO: Extract into separate interface - */ - public abstract void repositoryInfoChanged(AbstractTask task); + public abstract void containersChanged(Set<TaskContainerDelta> containers); - public abstract void taskDeleted(AbstractTask task); - - public abstract void containerAdded(AbstractTaskContainer container); - - public abstract void containerDeleted(AbstractTaskContainer container); - - public abstract void containerInfoChanged(AbstractTaskContainer container); - - /** - * @param task - * @param fromContainer can be null - * @param toContainer can be null - */ - public abstract void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer); - - public abstract void taskAdded(AbstractTask task); - } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java new file mode 100644 index 000000000..4a28f9672 --- /dev/null +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * 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.mylyn.tasks.core; + + +/** + * Immutable. + * + * @author Mik Kersten + */ +public final class TaskContainerDelta { + + public enum Kind { + ADDED, REMOVED, CHANGED + } + + private final AbstractTaskContainer container; + + private final Kind kind; + + public TaskContainerDelta(AbstractTaskContainer container, Kind kind) { + this.container = container; + this.kind = kind; + } + + public AbstractTaskContainer getContainer() { + return container; + } + + public Kind getKind() { + return kind; + } + +} diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java index 3173c5ca7..4dae6073b 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java @@ -74,7 +74,7 @@ public class TaskList { } public void addTask(AbstractTask task) { - addTask(task, archiveContainer); + addTask(task, null); } /** @@ -94,44 +94,51 @@ public class TaskList { return result; } - /** * Precondition: {@code container} already exists in tasklist (be it a parent task, category, or query) - * @param task to be added (hit, subtask, etc) - * @param container task container, query or parent task + * + * @param task + * to be added (hit, subtask, etc) + * @param container + * task container, query or parent task */ - public void addTask(AbstractTask task, AbstractTaskContainer parentElement) { + public void addTask(AbstractTask task, AbstractTaskContainer parentContainer) { + if (task == null) { + return; + } AbstractTask newTask = tasks.get(task.getHandleIdentifier()); if (newTask == null) { newTask = task; tasks.put(newTask.getHandleIdentifier(), newTask); - archiveContainer.add(newTask); - newTask.setCategory(archiveContainer); + archiveContainer.addChild(newTask); +// newTask.addParentContainer(archiveContainer); + + // NOTE: only called for newly-created tasks + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(newTask, TaskContainerDelta.Kind.ADDED)); for (ITaskListChangeListener listener : changeListeners) { - listener.taskAdded(newTask); + listener.containersChanged(delta); } } - if (parentElement != null) { - parentElement.add(newTask); - if (parentElement instanceof TaskCategory) { - newTask.setCategory((TaskCategory)parentElement); + if (parentContainer != null) { + parentContainer.addChild(newTask); + if ((parentContainer instanceof AbstractTaskCategory && ((AbstractTaskCategory) parentContainer).isUserDefined())) { + newTask.addParentContainer((TaskCategory) parentContainer); } } else { - automaticCategory.add(newTask); - newTask.setCategory(automaticCategory); + automaticCategory.addChild(newTask); + newTask.addParentContainer(automaticCategory); } } - public void refactorRepositoryUrl(String oldRepositoryUrl, String newRepositoryUrl) { for (AbstractTask task : tasks.values()) { if (task instanceof AbstractTask) { AbstractTask repositoryTask = (AbstractTask) task; - if (oldRepositoryUrl.equals(RepositoryTaskHandleUtil.getRepositoryUrl(repositoryTask - .getHandleIdentifier()))) { + if (oldRepositoryUrl.equals(RepositoryTaskHandleUtil.getRepositoryUrl(repositoryTask.getHandleIdentifier()))) { tasks.remove(repositoryTask.getHandleIdentifier()); repositoryTask.setRepositoryUrl(newRepositoryUrl); tasks.put(repositoryTask.getHandleIdentifier(), repositoryTask); @@ -144,16 +151,19 @@ public class TaskList { } } + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); for (AbstractRepositoryQuery query : queries.values()) { if (query.getRepositoryUrl().equals(oldRepositoryUrl)) { query.setRepositoryUrl(newRepositoryUrl); - for (ITaskListChangeListener listener : changeListeners) { - listener.containerInfoChanged(query); - } + delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.CHANGED)); } } + for (ITaskListChangeListener listener : changeListeners) { + listener.containersChanged(delta); + } } + @Deprecated public void moveToRoot(AbstractTask task) { moveToContainer(automaticCategory, task); } @@ -162,10 +172,18 @@ public class TaskList { if (!tasks.containsKey(task.getHandleIdentifier())) { tasks.put(task.getHandleIdentifier(), task); } + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(toContainer, TaskContainerDelta.Kind.CHANGED)); - AbstractTaskCategory fromContainer = task.getCategory(); - if (fromContainer instanceof AbstractTaskCategory) { - (fromContainer).remove(task); + Set<AbstractTaskContainer> currentContainers = task.getParentContainers(); + for (AbstractTaskContainer taskContainer : currentContainers) { + if (taskContainer instanceof AbstractTaskCategory) { + if (!(taskContainer instanceof TaskArchive)) { + (taskContainer).removeChild(task); + } + task.removeParentContainer(taskContainer); + delta.add(new TaskContainerDelta(taskContainer, TaskContainerDelta.Kind.CHANGED)); + } } if (toContainer != null) { internalAddTask(task, toContainer); @@ -173,14 +191,17 @@ public class TaskList { internalAddTask(task, archiveContainer); } for (ITaskListChangeListener listener : changeListeners) { - listener.taskMoved(task, fromContainer, toContainer); + listener.containersChanged(delta); } } public void addCategory(TaskCategory category) { categories.put(category.getHandleIdentifier(), category); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(category, TaskContainerDelta.Kind.ADDED)); for (ITaskListChangeListener listener : changeListeners) { - listener.containerAdded(category); + listener.containersChanged(delta); } } @@ -194,8 +215,12 @@ public class TaskList { public void renameTask(AbstractTask task, String description) { task.setSummary(description); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED)); + for (ITaskListChangeListener listener : changeListeners) { - listener.localInfoChanged(task); + listener.containersChanged(delta); } } @@ -213,61 +238,80 @@ public class TaskList { } } else if (container instanceof TaskCategory && categories.remove(container.getHandleIdentifier()) != null) { container.setDescription(newDescription); - this.addCategory((TaskCategory)container); + this.addCategory((TaskCategory) container); } } + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED)); for (ITaskListChangeListener listener : changeListeners) { - listener.containerInfoChanged(container); + listener.containersChanged(delta); } } public void addQuery(AbstractRepositoryQuery query) { queries.put(query.getHandleIdentifier(), query); + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.ADDED)); for (ITaskListChangeListener listener : changeListeners) { - listener.containerAdded(query); + listener.containersChanged(delta); } } /** * TODO: refactor around querying containers for their tasks * - * Task is removed from all containers: root, archive, category, and tasks - * catchall (Currently no support for deletion of subtasks) + * Task is removed from all containers: root, archive, category, and tasks catchall (Currently no support for + * deletion of subtasks) */ public void deleteTask(AbstractTask task) { - archiveContainer.remove(task); - automaticCategory.remove(task); - if (task.getCategory() != null) { - task.getCategory().remove(task); - task.setCategory(null); + archiveContainer.removeChild(task); + automaticCategory.removeChild(task); + + for (AbstractTaskContainer container : task.getParentContainers()) { + container.removeChild(task); + task.removeParentContainer(container); } tasks.remove(task.getHandleIdentifier()); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.REMOVED)); for (ITaskListChangeListener listener : changeListeners) { - listener.taskDeleted(task); + listener.containersChanged(delta); } } public void deleteCategory(AbstractTaskCategory category) { for (AbstractTask task : category.getChildren()) { - automaticCategory.add(task); + automaticCategory.addChild(task); } categories.remove(category.getHandleIdentifier()); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(automaticCategory, TaskContainerDelta.Kind.CHANGED)); + delta.add(new TaskContainerDelta(category, TaskContainerDelta.Kind.CHANGED)); + for (ITaskListChangeListener listener : changeListeners) { - listener.containerDeleted(category); + listener.containersChanged(delta); } } public void deleteQuery(AbstractRepositoryQuery query) { queries.remove(query.getHandleIdentifier()); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.REMOVED)); for (ITaskListChangeListener listener : changeListeners) { - listener.containerDeleted(query); + listener.containersChanged(delta); } } public void markComplete(AbstractTask task, boolean complete) { task.setCompleted(complete); + + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED)); for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { - listener.localInfoChanged(task); + listener.containersChanged(delta); } } @@ -289,13 +333,13 @@ public class TaskList { public void internalAddTask(AbstractTask task, AbstractTaskCategory container) { tasks.put(task.getHandleIdentifier(), task); if (container != null) { - container.add(task); + container.addChild(task); if (container instanceof TaskCategory) { - task.setCategory((AbstractTaskCategory)container); + task.addParentContainer(container); } } else { - task.setCategory(automaticCategory); - automaticCategory.add(task); + automaticCategory.addChild(task); + task.addParentContainer(automaticCategory); } } @@ -564,35 +608,38 @@ public class TaskList { return Collections.unmodifiableSet(changeListeners); } - /** - * TODO: refactor into task deltas? - */ - public void notifyLocalInfoChanged(AbstractTask task) { + public void notifyTaskChanged(AbstractTask task) { for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { try { - listener.localInfoChanged(task); + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED)); + listener.containersChanged(delta); } catch (Throwable t) { - MylarStatusHandler.fail(t, "notification failed for: " + listener, false); + MylarStatusHandler.fail(t, "Notification failed for: " + listener, false); } } } - public void notifyRepositoryInfoChanged(AbstractTask task) { - for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { - try { - listener.repositoryInfoChanged(task); - } catch (Throwable t) { - MylarStatusHandler.fail(t, "notification failed for: " + listener, false); + public void notifyContainersUpdated(Set<? extends AbstractTaskContainer> containers) { + if (containers == null) { + for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { + try { + listener.containersChanged(null); + } catch (Throwable t) { + MylarStatusHandler.fail(t, "notification failed for: " + listener, false); + } } - } - } - - public void notifyContainerUpdated(AbstractTaskContainer container) { - for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { - try { - listener.containerInfoChanged(container); - } catch (Throwable t) { - MylarStatusHandler.fail(t, "notification failed for: " + listener, false); + } else { + Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>(); + for (AbstractTaskContainer abstractTaskContainer : containers) { + delta.add(new TaskContainerDelta(abstractTaskContainer, TaskContainerDelta.Kind.CHANGED)); + } + for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) { + try { + listener.containersChanged(delta); + } catch (Throwable t) { + MylarStatusHandler.fail(t, "notification failed for: " + listener, false); + } } } } diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java index 20845d512..6109fee27 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java @@ -301,19 +301,19 @@ public class TaskListManagerTest extends TestCase { AbstractTask task1 = new LocalTask("t1", "t1"); manager.getTaskList().moveToRoot(task1); assertEquals(1, manager.getTaskList().getRootTasks().size()); - assertEquals(UnfiledCategory.HANDLE, task1.getCategory().getHandleIdentifier()); + assertEquals(UnfiledCategory.HANDLE, task1.getParentContainers().iterator().next().getHandleIdentifier()); TaskCategory cat1 = new TaskCategory("c1"); manager.getTaskList().addCategory(cat1); manager.getTaskList().moveToContainer(cat1, task1); assertEquals(0, manager.getTaskList().getRootTasks().size()); - assertEquals(cat1, task1.getCategory()); + assertEquals(cat1, task1.getParentContainers().iterator().next()); manager.getTaskList().moveToRoot(task1); assertEquals(1, manager.getTaskList().getRootTasks().size()); assertEquals(0, cat1.getChildren().size()); - assertEquals(UnfiledCategory.HANDLE, task1.getCategory().getHandleIdentifier()); + assertEquals(UnfiledCategory.HANDLE, task1.getParentContainers().iterator().next().getHandleIdentifier()); } public void testEmpty() { @@ -473,7 +473,7 @@ public class TaskListManagerTest extends TestCase { MockRepositoryTask reportInCat1 = new MockRepositoryTask("123"); manager.getTaskList().moveToContainer(cat1, reportInCat1); - assertEquals(cat1, reportInCat1.getCategory()); + assertEquals(cat1, reportInCat1.getParentContainers().iterator().next()); manager.saveTaskList(); assertNotNull(manager.getTaskList()); @@ -529,7 +529,7 @@ public class TaskListManagerTest extends TestCase { AbstractTask task3 =manager.createNewLocalTask("task 3"); manager.getTaskList().moveToContainer(cat1, task3); cat1Contents.add(task3); - assertEquals(cat1, task3.getCategory()); + assertEquals(cat1, task3.getParentContainers().iterator().next()); AbstractTask sub2 = manager.createNewLocalTask("sub 2"); manager.getTaskList().addTask(sub2, task3); manager.getTaskList().moveToContainer(manager.getTaskList().getArchiveContainer(), sub2); @@ -540,7 +540,7 @@ public class TaskListManagerTest extends TestCase { MockRepositoryTask reportInCat1 = new MockRepositoryTask("123"); manager.getTaskList().moveToContainer(cat1, reportInCat1); - assertEquals(cat1, reportInCat1.getCategory()); + assertEquals(cat1, reportInCat1.getParentContainers().iterator().next()); cat1Contents.add(reportInCat1); MockRepositoryTask reportInRoot = new MockRepositoryTask("124"); diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java index b3332b213..c81ac5796 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java @@ -28,7 +28,6 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.MarkTaskCompleteAction; import org.eclipse.mylyn.internal.tasks.ui.actions.NewCategoryAction; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskCategory; @@ -103,24 +102,24 @@ public class TaskListUiTest extends TestCase { cat1task2 = manager.createNewLocalTask("task 2"); cat1task2.setPriority(PriorityLevel.P2.toString()); - cat1task2.setCategory(cat1); + cat1task2.addParentContainer(cat1); manager.getTaskList().moveToContainer(cat1, cat1task2); cat1task3 = manager.createNewLocalTask("task 3"); cat1task3.setPriority(PriorityLevel.P3.toString()); cat1task3.setCompleted(true); - cat1task3.setCategory(cat1); + cat1task3.addParentContainer(cat1); manager.getTaskList().moveToContainer(cat1, cat1task3); cat1task4 = manager.createNewLocalTask("task 4"); cat1task4.setPriority(PriorityLevel.P4.toString()); - cat1task4.setCategory(cat1); + cat1task4.addParentContainer(cat1); manager.getTaskList().moveToContainer(cat1, cat1task4); cat1task5 = manager.createNewLocalTask("task 5"); cat1task5.setPriority(PriorityLevel.P5.toString()); cat1task5.setCompleted(true); - cat1task5.setCategory(cat1); + cat1task5.addParentContainer(cat1); manager.getTaskList().moveToContainer(cat1, cat1task5); manager.getTaskList().addCategory(cat1); @@ -130,7 +129,7 @@ public class TaskListUiTest extends TestCase { cat2task1 = manager.createNewLocalTask("task 1"); cat2task1.setPriority(PriorityLevel.P1.toString()); - cat2task1.setCategory(cat2); + cat2task1.addParentContainer(cat2); manager.getTaskList().moveToContainer(cat2, cat2task1); cat2task1sub1 = manager.createNewLocalTask("sub task 1"); @@ -140,23 +139,23 @@ public class TaskListUiTest extends TestCase { cat2task2 = manager.createNewLocalTask("task 2"); cat2task2.setPriority(PriorityLevel.P2.toString()); cat2task2.setCompleted(true); - cat2task2.setCategory(cat2); + cat2task2.addParentContainer(cat2); manager.getTaskList().moveToContainer(cat2, cat2task2); cat2task3 = manager.createNewLocalTask("task 3"); cat2task3.setPriority(PriorityLevel.P3.toString()); - cat2task3.setCategory(cat2); + cat2task3.addParentContainer(cat2); manager.getTaskList().moveToContainer(cat2, cat2task3); cat2task4 = manager.createNewLocalTask("task 4"); cat2task4.setPriority(PriorityLevel.P4.toString()); cat2task4.setCompleted(true); - cat2task4.setCategory(cat2); + cat2task4.addParentContainer(cat2); manager.getTaskList().moveToContainer(cat2, cat2task4); cat2task5 = manager.createNewLocalTask("task 5"); cat2task5.setPriority(PriorityLevel.P5.toString()); - cat2task5.setCategory(cat2); + cat2task5.addParentContainer(cat2); manager.getTaskList().moveToContainer(cat2, cat2task5); manager.getTaskList().addCategory(cat2); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java index 36e2789c1..46d58ad9a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java @@ -11,7 +11,11 @@ package org.eclipse.mylyn.internal.tasks.ui.editors; +import java.util.HashSet; +import java.util.Set; + import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskCategory; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.ui.IEditorInput; @@ -68,7 +72,10 @@ public class CategoryEditorInput implements IEditorInput { public void setUrl(String url) { category.setUrl(url); - TasksUiPlugin.getTaskListManager().getTaskList().notifyContainerUpdated(category); + Set<AbstractTaskContainer> updated = new HashSet<AbstractTaskContainer>(); + updated.add(category); + TasksUiPlugin.getTaskListManager().getTaskList().notifyContainersUpdated(updated); +// .notifyContainerUpdated(category); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java index 8640bae87..995b5d013 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java @@ -14,6 +14,7 @@ package org.eclipse.mylyn.internal.tasks.ui.editors; import java.io.File; import java.text.DateFormat; import java.util.Calendar; +import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.layout.GridDataFactory; @@ -28,9 +29,8 @@ import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.monitor.core.DateUtil; import org.eclipse.mylyn.monitor.ui.MonitorUiPlugin; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel; import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; @@ -135,49 +135,24 @@ public class TaskPlanningEditor extends TaskFormPage { private ITaskListChangeListener TASK_LIST_LISTENER = new ITaskListChangeListener() { - public void localInfoChanged(final AbstractTask updateTask) { - if (updateTask != null && task != null - && updateTask.getHandleIdentifier().equals(task.getHandleIdentifier())) { - if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - - updateTaskData(updateTask); + public void containersChanged(Set<TaskContainerDelta> containers) { + for (TaskContainerDelta taskContainerDelta : containers) { + if (taskContainerDelta.getContainer() instanceof AbstractTask) { + final AbstractTask updateTask = (AbstractTask)taskContainerDelta.getContainer(); + if (updateTask != null && task != null + && updateTask.getHandleIdentifier().equals(task.getHandleIdentifier())) { + if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + updateTaskData(updateTask); + } + }); } - - }); + } } } } - public void repositoryInfoChanged(AbstractTask task) { - localInfoChanged(task); - } - - public void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { - // ignore - } - - public void taskDeleted(AbstractTask task) { - // ignore - } - - public void containerAdded(AbstractTaskContainer container) { - // ignore - } - - public void containerDeleted(AbstractTaskContainer container) { - // ignore - } - - public void taskAdded(AbstractTask task) { - // ignore - } - - public void containerInfoChanged(AbstractTaskContainer container) { - // ignore - } - }; private FormToolkit toolkit; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java index 5bd342a54..05aaf5657 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; +import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -31,9 +32,9 @@ import org.eclipse.mylyn.context.core.ContextCorePlugin; import org.eclipse.mylyn.core.MylarStatusHandler; import org.eclipse.mylyn.internal.context.core.InteractionContextManager; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.ui.TaskListManager; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.ui.PlatformUI; @@ -232,40 +233,12 @@ public class TaskListSaveManager implements ITaskListChangeListener, IBackground // ignore } -// /** -// * For testing. -// */ -// public void setForceBackgroundSave(boolean on) { -// forceBackgroundSave = on; -// // saveTimer.setForceSyncExec(on); -// } - - public void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { - saveTaskList(false, true); - } - - public void taskDeleted(AbstractTask task) { - saveTaskList(false, true); - } - - public void containerAdded(AbstractTaskContainer container) { - saveTaskList(false, true); - } - - public void containerDeleted(AbstractTaskContainer container) { - saveTaskList(false, true); - } - - public void taskAdded(AbstractTask task) { - saveTaskList(false, true); - } - /** For testing only * */ public BackgroundSaveTimer getSaveTimer() { return saveTimer; } - public void containerInfoChanged(AbstractTaskContainer container) { + public void containersChanged(Set<TaskContainerDelta> containers) { saveTaskList(false, true); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java index 36f8a8a25..51450c0a9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java @@ -11,10 +11,8 @@ package org.eclipse.mylyn.internal.tasks.ui.views; import java.util.Arrays; import org.eclipse.mylyn.context.core.ContextCorePlugin; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TableDecoratingLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TableDecoratingLabelProvider.java index 85f2d46d4..769efb980 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TableDecoratingLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TableDecoratingLabelProvider.java @@ -18,7 +18,6 @@ import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.mylyn.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.swt.graphics.Image; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java index ee3f775a4..a130b3917 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java @@ -20,14 +20,13 @@ import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.mylyn.core.MylarStatusHandler; -import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; import org.eclipse.mylyn.internal.tasks.ui.TaskListColorsAndFonts; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; import org.eclipse.mylyn.monitor.core.DateUtil; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java index 042e1913b..3823a95f9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java @@ -26,11 +26,9 @@ import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskCategory; -import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState; import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel; +import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState; import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.swt.graphics.Color; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java index cad2dab91..6c90d1823 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java @@ -59,13 +59,13 @@ public class TaskListContentProvider implements IStructuredContentProvider, ITre } public Object getParent(Object child) { - if (child instanceof AbstractTask) { +// if (child instanceof AbstractTask) { // if (((ITask) child).getParent() != null) { // return ((ITask) child).getParent(); // } else { - return ((AbstractTask) child).getCategory(); +// return ((AbstractTask) child).getCategory(); // } - } +// } return null; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java index 21d7cf5a4..de995c2b5 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java @@ -34,7 +34,6 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskCategory; import org.eclipse.mylyn.tasks.core.TaskRepository; @@ -116,10 +115,18 @@ public class TaskListDropAdapter extends ViewerDropAdapter { TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer((TaskCategory) currentTarget, task); } else if (currentTarget instanceof AbstractTask) { AbstractTask targetTask = (AbstractTask) currentTarget; - if (targetTask.getCategory() == null) { + TaskCategory targetCategory = null; + // TODO: just look for categories? + if (targetTask.getParentContainers().size() == 1) { + AbstractTaskContainer container = targetTask.getParentContainers().iterator().next(); + if (container instanceof TaskCategory) { + targetCategory = (TaskCategory)container; + } + } + if (targetCategory == null) { TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(task); } else { - TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(targetTask.getCategory(), task); + TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(targetCategory, task); } } else if (currentTarget instanceof ScheduledTaskContainer) { ScheduledTaskContainer container = (ScheduledTaskContainer)currentTarget; @@ -282,7 +289,7 @@ public class TaskListDropAdapter extends ViewerDropAdapter { @Override protected void setTitle(final String pageTitle) { newTask.setSummary(pageTitle); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(newTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(newTask); } }; job.schedule(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java index 523b80ff0..462eee07b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java @@ -16,10 +16,10 @@ import java.util.Set; import org.eclipse.jface.layout.TreeColumnLayout; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskActivityListener; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.tasks.ui.TasksUiUtil; import org.eclipse.swt.SWT; @@ -86,29 +86,13 @@ public class TaskListFilteredTree extends AbstractMylarFilteredTree { TasksUiPlugin.getTaskListManager().getTaskList().addChangeListener(new ITaskListChangeListener() { - public void containerAdded(AbstractTaskContainer container) { - } - - public void containerDeleted(AbstractTaskContainer container) { - } - - public void containerInfoChanged(AbstractTaskContainer container) { - } - - public void localInfoChanged(AbstractTask task) { - updateTaskProgressBar(); - } - - public void repositoryInfoChanged(AbstractTask task) { - } - - public void taskAdded(AbstractTask task) { - } - - public void taskDeleted(AbstractTask task) { - } - - public void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { + public void containersChanged(Set<TaskContainerDelta> containers) { + for (TaskContainerDelta taskContainerDelta : containers) { + if (taskContainerDelta.getContainer() instanceof AbstractTask) { + updateTaskProgressBar(); + break; + } + } } }); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java index 5f8494e5d..874e9b022 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java @@ -28,8 +28,6 @@ import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.RepositoryStatus; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java index 0c9a5a873..26771511e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java @@ -92,11 +92,10 @@ import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskCategory; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskActivityListener; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskCategory; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel; import org.eclipse.mylyn.tasks.ui.TaskTransfer; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; @@ -192,8 +191,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { PriorityLevel.P3.toString(), PriorityLevel.P4.toString(), PriorityLevel.P5.toString() }; public static final String[] PRIORITY_LEVEL_DESCRIPTIONS = { PriorityLevel.P1.getDescription(), - PriorityLevel.P2.getDescription(), PriorityLevel.P3.getDescription(), - PriorityLevel.P4.getDescription(), PriorityLevel.P5.getDescription() }; + PriorityLevel.P2.getDescription(), PriorityLevel.P3.getDescription(), PriorityLevel.P4.getDescription(), + PriorityLevel.P5.getDescription() }; private static final String PART_NAME = "Task List"; @@ -342,7 +341,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { private final Listener CATEGORY_GRADIENT_DRAWER = new Listener() { public void handleEvent(Event event) { - if (event.item.getData() instanceof AbstractTaskContainer && !(event.item.getData() instanceof AbstractTask)) { + if (event.item.getData() instanceof AbstractTaskContainer + && !(event.item.getData() instanceof AbstractTask)) { Scrollable scrollable = (Scrollable) event.widget; GC gc = event.gc; @@ -454,99 +454,133 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { private final ITaskListChangeListener TASK_REFERESH_LISTENER = new ITaskListChangeListener() { - public void localInfoChanged(final AbstractTask task) { + public void containersChanged(final Set<TaskContainerDelta> containers) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { - if (getCurrentPresentation().getPresentationName().equals( - scheduledPresentation.getPresentationName())) { + if (containers == null) { refresh(null); - } else { - refresh(task); + return; } - } - }); - if (task.isActive()) { - String activeTaskLabel = filteredTree.getActiveTaskLabelText(); - if (activeTaskLabel != null && !activeTaskLabel.equals(task.getSummary())) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - filteredTree.indicateActiveTask(task); + + for (TaskContainerDelta taskContainerDelta : containers) { + if (taskContainerDelta.getContainer() instanceof AbstractTask) { + AbstractTask task = (AbstractTask)taskContainerDelta.getContainer(); + switch (taskContainerDelta.getKind()) { + case ADDED: + refresh(null); + break; + case REMOVED: + refresh(null); + break; + case CHANGED: + refresh(task); + } + } else { // category or query + switch (taskContainerDelta.getKind()) { + case ADDED: + refresh(null); + break; + case REMOVED: + refresh(null); + break; + case CHANGED: + if (getCurrentPresentation().getPresentationName().equals( + scheduledPresentation.getPresentationName())) { + refresh(null); + } else { + if (taskContainerDelta.getContainer().equals(TasksUiPlugin.getTaskListManager() + .getTaskList() + .getAutomaticCategory())) { + refresh(null); + } else { + refresh(taskContainerDelta.getContainer()); + } + } + } } - }); - } - } - } - - public void repositoryInfoChanged(AbstractTask task) { - localInfoChanged(task); - } - - public void taskMoved(final AbstractTask task, final AbstractTaskContainer fromContainer, - final AbstractTaskContainer toContainer) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - // category might appear or disappear - refresh(null); - AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager().getTaskList() - .getAutomaticCategory(); - if (rootCategory.equals(fromContainer) || rootCategory.equals(toContainer)) { - refresh(null); - } else { - refresh(toContainer); - refresh(task); - refresh(fromContainer); - } - } - }); - } - - public void taskDeleted(AbstractTask task) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - refresh(null); - } - }); - } - - public void containerAdded(AbstractTaskContainer container) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - refresh(null); - } - }); - } - - public void containerDeleted(AbstractTaskContainer container) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - refresh(null); - } - }); - } - - public void taskAdded(AbstractTask task) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - refresh(null); - } - }); - } - - public void containerInfoChanged(final AbstractTaskContainer container) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - if (container == null) { - // HACK: should be part of policy - getViewer().refresh(false); - } else if (container.equals(TasksUiPlugin.getTaskListManager().getTaskList() - .getAutomaticCategory())) { - refresh(null); - } else { - refresh(container); } } }); } + +// public void localInfoChanged(final AbstractTask task) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// if (getCurrentPresentation().getPresentationName().equals( +// scheduledPresentation.getPresentationName())) { +// refresh(null); +// } else { +// refresh(task); +// } +// } +// }); +// if (task.isActive()) { +// String activeTaskLabel = filteredTree.getActiveTaskLabelText(); +// if (activeTaskLabel != null && !activeTaskLabel.equals(task.getSummary())) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// filteredTree.indicateActiveTask(task); +// } +// }); +// } +// } +// } + +// public void repositoryInfoChanged(AbstractTask task) { +// localInfoChanged(task); +// } + +// public void taskMoved(final AbstractTask task, final AbstractTaskContainer fromContainer, +// final AbstractTaskContainer toContainer) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// // category might appear or disappear +// refresh(null); +// AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager() +// .getTaskList() +// .getAutomaticCategory(); +// if (rootCategory.equals(fromContainer) || rootCategory.equals(toContainer)) { +// refresh(null); +// } else { +// refresh(toContainer); +// refresh(task); +// refresh(fromContainer); +// } +// } +// }); +// } + +// public void taskDeleted(AbstractTask task) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// refresh(null); +// } +// }); +// } + +// public void containerAdded(AbstractTaskContainer container) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// refresh(null); +// } +// }); +// } +// +// public void containerDeleted(AbstractTaskContainer container) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// refresh(null); +// } +// }); +// } + +// public void taskAdded(AbstractTask task) { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// refresh(null); +// } +// }); +// } }; private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() { @@ -554,7 +588,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME) || TaskListColorsAndFonts.isTaskListTheme(event.getProperty())) { configureGradientColors(); - taskListTableLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme().getColorRegistry() + taskListTableLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme() + .getColorRegistry() .get(TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY)); getViewer().refresh(); } @@ -786,8 +821,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { final IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); Color categoryBackground = themeManager.getCurrentTheme().getColorRegistry().get( TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY); - taskListTableLabelProvider = new TaskTableLabelProvider(new TaskElementLabelProvider(), PlatformUI - .getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground); + taskListTableLabelProvider = new TaskTableLabelProvider(new TaskElementLabelProvider(), + PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground); getViewer().setLabelProvider(taskListTableLabelProvider); CellEditor[] editors = new CellEditor[columnNames.length]; @@ -851,7 +886,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { } } else if ((e.keyCode & SWT.KEYCODE_BIT) != 0) { // Do nothing here since it is key code - } else if (e.keyCode == 'c' && e.stateMask == SWT.MOD1) { + } else if (e.keyCode == 'c' && e.stateMask == SWT.MOD1) { copyDetailsAction.run(); } else if (e.keyCode == SWT.DEL) { deleteAction.run(); @@ -1259,10 +1294,10 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { action.setEnabled(true); } else if (action instanceof RenameAction) { if (element instanceof AbstractTaskCategory) { - AbstractTaskCategory container = (AbstractTaskCategory)element; + AbstractTaskCategory container = (AbstractTaskCategory) element; action.setEnabled(container.isUserDefined()); } else if (element instanceof AbstractRepositoryQuery) { - action.setEnabled(true); + action.setEnabled(true); } } } else { @@ -1326,15 +1361,14 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { } /** - * Recursive function that checks for the occurrence of a certain task - * taskId. All children of the supplied node will be checked. + * Recursive function that checks for the occurrence of a certain task taskId. All children of the supplied node + * will be checked. * * @param task * The <code>ITask</code> object that is to be searched. * @param taskId * The taskId that is being searched for. - * @return <code>true</code> if the taskId was found in the node or any of - * its children + * @return <code>true</code> if the taskId was found in the node or any of its children */ protected boolean lookForId(String taskId) { return (TasksUiPlugin.getTaskListManager().getTaskList().getTask(taskId) == null); @@ -1520,8 +1554,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { isPaused = paused; IStatusLineManager statusLineManager = getViewSite().getActionBars().getStatusLineManager(); if (isPaused) { - statusLineManager - .setMessage(TasksUiImages.getImage(TasksUiImages.TASKLIST), "Mylar context capture paused"); + statusLineManager.setMessage(TasksUiImages.getImage(TasksUiImages.TASKLIST), "Mylar context capture paused"); setPartName("(paused) " + PART_NAME); } else { statusLineManager.setMessage(""); @@ -1598,47 +1631,34 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { private void refresh(final AbstractTaskContainer element) { if (getViewer().getControl() != null && !getViewer().getControl().isDisposed()) { if (element == null) { - try { - // getViewer().getControl().setRedraw(false); - getViewer().refresh(true); - } finally { - // getViewer().getControl().setRedraw(true); - } + getViewer().refresh(true); } else { try { if (element instanceof AbstractTask) { AbstractTask task = (AbstractTask) element; - AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager().getTaskList() - .getAutomaticCategory(); - Set<AbstractRepositoryQuery> queries = TasksUiPlugin.getTaskListManager().getTaskList() - .getQueriesForHandle(task.getHandleIdentifier()); - if (task.getCategory() == null || task.getCategory().equals(rootCategory) - || (task instanceof AbstractTask && queries.isEmpty())) { - // || task.getContainer() instanceof TaskArchive) { - refresh(null); - } else { - getViewer().refresh(task.getCategory(), true); - // refresh(task.getContainer()); - } - -// AbstractQueryHit hit = -// TasksUiPlugin.getTaskListManager().getTaskList().getQueryHit( -// task.getHandleIdentifier()); -// if (hit != null) { -// refresh(hit); -// } -// } else if (element instanceof AbstractQueryHit) { -// AbstractQueryHit hit = (AbstractQueryHit) element; - queries = TasksUiPlugin.getTaskListManager().getTaskList().getQueriesForHandle( - task.getHandleIdentifier()); - for (AbstractRepositoryQuery query : queries) { - refresh(query); - } - } else if (element instanceof AbstractTaskContainer) { - getViewer().refresh(element, true); + getViewer().refresh(task, true); +// AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager() +// .getTaskList() +// .getAutomaticCategory(); +// Set<AbstractRepositoryQuery> queries = TasksUiPlugin.getTaskListManager() +// .getTaskList() +// .getQueriesForHandle(task.getHandleIdentifier()); +// if (task.getCategory() == null || task.getCategory().equals(rootCategory) +// || (task instanceof AbstractTask && queries.isEmpty())) { +// // || task.getContainer() instanceof TaskArchive) { +// refresh(null); +// } else { +// getViewer().refresh(task.getCategory(), true); +// // refresh(task.getContainer()); +// } +// queries = TasksUiPlugin.getTaskListManager().getTaskList().getQueriesForHandle( +// task.getHandleIdentifier()); +// for (AbstractRepositoryQuery query : queries) { +// refresh(query); +// } } else { getViewer().refresh(element, true); - } + } } catch (SWTException e) { MylarStatusHandler.log(e, "Failed to refresh Task List"); } @@ -1660,8 +1680,9 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { public static String getCurrentPriorityLevel() { if (TasksUiPlugin.getDefault().getPreferenceStore().contains(TasksUiPreferenceConstants.FILTER_PRIORITY)) { - return TasksUiPlugin.getDefault().getPreferenceStore().getString( - TasksUiPreferenceConstants.FILTER_PRIORITY); + return TasksUiPlugin.getDefault() + .getPreferenceStore() + .getString(TasksUiPreferenceConstants.FILTER_PRIORITY); } else { return PriorityLevel.P5.toString(); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskTableLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskTableLabelProvider.java index d977c1710..0c27d3280 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskTableLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskTableLabelProvider.java @@ -23,7 +23,6 @@ import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; import org.eclipse.mylyn.internal.tasks.core.TaskArchive; import org.eclipse.mylyn.internal.tasks.ui.TaskListColorsAndFonts; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.swt.graphics.Color; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskElementFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskElementFactory.java index 4ceef99d7..e15656aef 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskElementFactory.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskElementFactory.java @@ -10,7 +10,6 @@ package org.eclipse.mylyn.internal.tasks.ui.workingset; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.TaskList; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.ui.IElementFactory; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java index 506a01ab3..49d699f0a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java @@ -10,13 +10,15 @@ package org.eclipse.mylyn.internal.tasks.ui.workingset; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; +import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.IWorkingSetUpdater; @@ -72,42 +74,33 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang TasksUiPlugin.getTaskListManager().getTaskList().removeChangeListener(this); } - - // ITaskListChangeListener - - public void containerAdded(AbstractTaskContainer container) { - } - - public void containerDeleted(AbstractTaskContainer container) { - synchronized (workingSets) { - for (IWorkingSet workingSet : workingSets) { - // TODO could filter by working set id - ArrayList<IAdaptable> remove = new ArrayList<IAdaptable>(); - for (IAdaptable adaptable : workingSet.getElements()) { - if (adaptable instanceof AbstractTaskContainer - && ((AbstractTaskContainer) adaptable).getHandleIdentifier().equals( - container.getHandleIdentifier())) { - remove.add(adaptable); + public void containersChanged(Set<TaskContainerDelta> containers) { + for (TaskContainerDelta taskContainerDelta : containers) { + switch (taskContainerDelta.getKind()) { + case REMOVED: + synchronized (workingSets) { + for (IWorkingSet workingSet : workingSets) { + // TODO could filter by working set id + Set<IAdaptable> remove = new HashSet<IAdaptable>(); + for (IAdaptable adaptable : workingSet.getElements()) { + if (adaptable instanceof AbstractTaskContainer + && ((AbstractTaskContainer) adaptable).getHandleIdentifier().equals( + taskContainerDelta.getContainer().getHandleIdentifier())) { + remove.add(adaptable); + } + } + if(!remove.isEmpty()) { + ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements())); + elements.removeAll(remove); + workingSet.setElements(elements.toArray(new IAdaptable[elements.size()])); + } + } } - } - if(!remove.isEmpty()) { - ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements())); - elements.removeAll(remove); - workingSet.setElements(elements.toArray(new IAdaptable[elements.size()])); - } + break; } } } - public void containerInfoChanged(AbstractTaskContainer container) { - } - - public void localInfoChanged(AbstractTask task) { - } - - public void repositoryInfoChanged(AbstractTask task) { - } - public void taskAdded(AbstractTask task) { } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java index e590aac0c..9a2ebc251 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java @@ -26,7 +26,6 @@ import org.eclipse.mylyn.internal.tasks.ui.wizards.CommonAddExistingTaskWizard; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskRepository; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java index 8c875a1e8..abf321820 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java @@ -220,7 +220,7 @@ public class RepositorySynchronizationManager { repositoryTask.setSyncState(RepositoryTaskSyncState.OUTGOING); TasksUiPlugin.getDefault().getTaskDataManager().saveEdits(repositoryTask.getHandleIdentifier(), Collections.unmodifiableSet(modifiedAttributes)); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } /** @@ -335,13 +335,13 @@ public class RepositorySynchronizationManager { dataManager.setOldTaskData(repositoryTask.getHandleIdentifier(), taskData); } repositoryTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } else if (read && repositoryTask.getSyncState().equals(RepositoryTaskSyncState.CONFLICT)) { if (taskData != null && taskData.getLastModified() != null) { repositoryTask.setLastSyncDateStamp(taskData.getLastModified()); } repositoryTask.setSyncState(RepositoryTaskSyncState.OUTGOING); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } else if (read && repositoryTask.getSyncState().equals(RepositoryTaskSyncState.SYNCHRONIZED)) { if (taskData != null && taskData.getLastModified() != null) { repositoryTask.setLastSyncDateStamp(taskData.getLastModified()); @@ -358,7 +358,7 @@ public class RepositorySynchronizationManager { } } else if (!read && repositoryTask.getSyncState().equals(RepositoryTaskSyncState.SYNCHRONIZED)) { repositoryTask.setSyncState(RepositoryTaskSyncState.INCOMING); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } } @@ -366,7 +366,8 @@ public class RepositorySynchronizationManager { TaskDataManager dataManager = TasksUiPlugin.getDefault().getTaskDataManager(); dataManager.discardEdits(repositoryTask.getHandleIdentifier()); repositoryTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED); - TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask); + + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } /** diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java index e3c3754fd..79a3e580f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java @@ -91,8 +91,9 @@ class SynchronizeQueryJob extends Job { protected IStatus run(IProgressMonitor monitor) { monitor.beginTask(JOB_LABEL, queries.size()); + taskList.notifyContainersUpdated(queries); for (AbstractRepositoryQuery repositoryQuery : queries) { - taskList.notifyContainerUpdated(repositoryQuery); +// taskList.notifyContainerUpdated(repositoryQuery); repositoryQuery.setStatus(null); monitor.setTaskName("Synchronizing: " + repositoryQuery.getSummary()); @@ -142,8 +143,8 @@ class SynchronizeQueryJob extends Job { } repositoryQuery.setCurrentlySynchronizing(false); - - taskList.notifyContainerUpdated(repositoryQuery); + taskList.notifyContainersUpdated(queries); +// taskList.notifyContainerUpdated(repositoryQuery); } for (TaskRepository repository : repositories) { @@ -152,7 +153,7 @@ class SynchronizeQueryJob extends Job { // HACK: force entire Task List to refresh in case containers need to // appear or disappear - taskList.notifyContainerUpdated(null); + taskList.notifyContainersUpdated(null); monitor.done(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java index 78c8fca64..abcecb8f1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java @@ -100,7 +100,7 @@ class SynchronizeTaskJob extends Job { // TODO: Set in connector.updateTask repositoryTask.setCurrentlySynchronizing(false); - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); // TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask); monitor.worked(1); @@ -128,7 +128,7 @@ class SynchronizeTaskJob extends Job { null)); } - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); ITaskDataHandler taskDataHandler = connector.getTaskDataHandler(); if (taskDataHandler != null) { String taskId = repositoryTask.getTaskId(); @@ -168,7 +168,7 @@ class SynchronizeTaskJob extends Job { if (repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING || repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT) { - TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(repositoryTask); } } else { connector.updateTaskFromRepository(repository, repositoryTask, monitor); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java index 3061c701d..2d34469f5 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java @@ -38,11 +38,11 @@ import org.eclipse.mylyn.context.core.IInteractionContextListener; import org.eclipse.mylyn.context.core.IInteractionElement; import org.eclipse.mylyn.core.MylarStatusHandler; import org.eclipse.mylyn.internal.context.core.InteractionContextManager; -import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; -import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector; import org.eclipse.mylyn.internal.tasks.core.LocalTask; import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil; +import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; import org.eclipse.mylyn.internal.tasks.core.TaskDataManager; import org.eclipse.mylyn.internal.tasks.core.WebTask; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; @@ -55,13 +55,12 @@ import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.monitor.core.InteractionEvent; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskActivityListener; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskCategory; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.core.TaskList; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel; @@ -209,31 +208,17 @@ public class TaskListManager implements IPropertyChangeListener { private final ITaskListChangeListener CHANGE_LISTENER = new ITaskListChangeListener() { - public void containerAdded(AbstractTaskContainer container) { - } - - public void containerDeleted(AbstractTaskContainer container) { - } - - public void containerInfoChanged(AbstractTaskContainer container) { - } - - public void localInfoChanged(AbstractTask task) { - } - - public void repositoryInfoChanged(AbstractTask task) { - } - - public void taskAdded(AbstractTask task) { - } - - public void taskDeleted(AbstractTask task) { - TaskListManager.this.resetAndRollOver(); - } - - public void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { + public void containersChanged(Set<TaskContainerDelta> containers) { + for (TaskContainerDelta taskContainerDelta : containers) { + if (taskContainerDelta.getContainer() instanceof AbstractTask) { + switch(taskContainerDelta.getKind()) { + case REMOVED: + TaskListManager.this.resetAndRollOver(); + return; + } + } + } } - }; private int timeTicks = 0; @@ -1036,7 +1021,7 @@ public class TaskListManager implements IPropertyChangeListener { tasksWithReminders.add(task); } parseFutureReminders(); - taskList.notifyLocalInfoChanged(task); + taskList.notifyTaskChanged(task); } public void setDueDate(AbstractTask task, Date dueDate) { @@ -1048,7 +1033,7 @@ public class TaskListManager implements IPropertyChangeListener { tasksWithDueDates.add(task); } parseFutureReminders(); - taskList.notifyLocalInfoChanged(task); + taskList.notifyTaskChanged(task); } /** @@ -1191,8 +1176,9 @@ public class TaskListManager implements IPropertyChangeListener { taskList.addTask(newTask, (TaskCategory) selectedObject); } else if (selectedObject instanceof AbstractTask) { AbstractTask task = (AbstractTask) selectedObject; - if (task.getCategory() instanceof TaskCategory) { - taskList.addTask(newTask, task.getCategory()); + AbstractTaskContainer container = task.getParentContainers().iterator().next(); + if (container instanceof TaskCategory) { + taskList.addTask(newTask, container); } else if (view != null && view.getDrilledIntoCategory() instanceof TaskCategory) { taskList.addTask(newTask, view.getDrilledIntoCategory()); } else { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java index ed7913beb..4a2fc149a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java @@ -38,8 +38,8 @@ import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.mylyn.core.MylarStatusHandler; -import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; import org.eclipse.mylyn.internal.tasks.core.LocalTask; +import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskDelegate; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.editors.CategoryEditor; import org.eclipse.mylyn.internal.tasks.ui.editors.CategoryEditorInput; @@ -49,8 +49,6 @@ import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskCategory; import org.eclipse.mylyn.tasks.core.TaskRepository; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditor.java index 5010a7ad0..cb704dc3e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditor.java @@ -80,7 +80,6 @@ import org.eclipse.mylyn.monitor.core.DateUtil; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskCategory; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.ITaskDataHandler; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; import org.eclipse.mylyn.tasks.core.RepositoryAttachment; @@ -89,6 +88,7 @@ import org.eclipse.mylyn.tasks.core.RepositoryStatus; import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskComment; +import org.eclipse.mylyn.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; @@ -286,27 +286,20 @@ public abstract class AbstractTaskEditor extends TaskFormPage { } }; - private final ITaskListChangeListener TASKLIST_CHANGE_LISTENER = new ITaskListChangeListener() { - - public void containerAdded(AbstractTaskContainer container) { - } - - public void containerDeleted(AbstractTaskContainer container) { - } - - public void containerInfoChanged(AbstractTaskContainer container) { - } - public void localInfoChanged(AbstractTask task) { - } - - public void repositoryInfoChanged(final AbstractTask task) { - - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - - public void run() { + private final ITaskListChangeListener TASKLIST_CHANGE_LISTENER = new ITaskListChangeListener() { - if (repositoryTask != null && task.equals(repositoryTask)) { + public void containersChanged(Set<TaskContainerDelta> containers) { + AbstractTask task = null; + for (TaskContainerDelta taskContainerDelta : containers) { + if (repositoryTask != null && repositoryTask.equals(taskContainerDelta.getContainer())) { + task = (AbstractTask)taskContainerDelta.getContainer(); + break; + } + } + if (task != null) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { if (repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING || repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT) { // MessageDialog.openInformation(AbstractTaskEditor.this.getSite().getShell(), @@ -326,20 +319,11 @@ public abstract class AbstractTaskEditor extends TaskFormPage { refreshEditor(); } } - } - }); - - } - - public void taskAdded(AbstractTask task) { - } - - public void taskDeleted(AbstractTask task) { - } - - public void taskMoved(AbstractTask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { + }); + } } }; + private List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/RepositoryTaskEditorDropListener.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/RepositoryTaskEditorDropListener.java index fc831d78e..49f6cff8c 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/RepositoryTaskEditorDropListener.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/RepositoryTaskEditorDropListener.java @@ -14,7 +14,6 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.mylyn.internal.tasks.ui.wizards.NewAttachmentWizard; import org.eclipse.mylyn.internal.tasks.ui.wizards.NewAttachmentWizardDialog; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetEvent; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java index db60cf619..7c5240a8b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java @@ -23,12 +23,11 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.mylyn.core.MylarStatusHandler; import org.eclipse.mylyn.internal.tasks.core.LocalTask; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorActionContributor; import org.eclipse.mylyn.internal.tasks.ui.editors.TaskPlanningEditor; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; @@ -234,7 +233,7 @@ public class TaskEditor extends SharedHeaderFormEditor implements IBusyEditor { public void notifyTaskChanged() { if (task != null) { - TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task); + TasksUiPlugin.getTaskListManager().getTaskList().notifyTaskChanged(task); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditorInput.java index 4731d5f40..5400405b8 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditorInput.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditorInput.java @@ -16,7 +16,6 @@ package org.eclipse.mylyn.tasks.ui.editors; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorInputFactory; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPersistableElement; diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java index 3bb54b048..f412e85fc 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java @@ -31,7 +31,6 @@ import org.eclipse.mylyn.internal.trac.core.model.TracTicketField; import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; import org.eclipse.mylyn.internal.trac.core.util.TracUtils; import org.eclipse.mylyn.tasks.core.AbstractAttributeFactory; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskDataHandler; import org.eclipse.mylyn.tasks.core.RepositoryAttachment; import org.eclipse.mylyn.tasks.core.RepositoryOperation; diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java index 8e04b1a88..00cf18b9e 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java @@ -43,7 +43,6 @@ import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; import org.eclipse.mylyn.internal.trac.ui.wizard.TracRepositorySettingsPage; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.QueryHitCollector; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.core.TaskRepository; |