diff options
author | spingel | 2010-10-09 22:45:31 +0000 |
---|---|---|
committer | spingel | 2010-10-09 22:45:31 +0000 |
commit | 81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd (patch) | |
tree | 3aad864c1cec506d934da7b0f980be97a255d5b1 /org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets | |
parent | 85425ba259b65ffc7e16fdefacba2d3a138df870 (diff) | |
download | org.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.tar.gz org.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.tar.xz org.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.zip |
NEW - bug 327262: Mylyn Task working sets cause loss of working set data on eclipse crash
https://bugs.eclipse.org/bugs/show_bug.cgi?id=327262
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets')
-rw-r--r-- | org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java index 98cc5b7c3..94807b653 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java @@ -8,6 +8,7 @@ * Contributors: * Eugene Kuleshov - initial API and implementation * Tasktop Technologies - initial API and implementation + * Yatta Solutions - fix for bug 327262 *******************************************************************************/ package org.eclipse.mylyn.internal.tasks.ui.workingsets; @@ -17,6 +18,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; @@ -47,6 +49,7 @@ import org.eclipse.ui.PlatformUI; * @author Eugene Kuleshov * @author Mik Kersten * @author Steffen Pingel + * @author Carsten Reckord */ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChangeListener, IResourceChangeListener { @@ -109,25 +112,37 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang } private void checkElementExistence(IWorkingSet workingSet) { - ArrayList<IAdaptable> list = new ArrayList<IAdaptable>(); - for (IAdaptable adaptable : workingSet.getElements()) { + ArrayList<IAdaptable> list = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements())); + boolean changed = false; + for (Iterator<IAdaptable> iter = list.iterator(); iter.hasNext();) { + IAdaptable adaptable = iter.next(); + boolean remove = false; if (adaptable instanceof AbstractTaskContainer) { String handle = ((AbstractTaskContainer) adaptable).getHandleIdentifier(); + remove = true; for (IRepositoryElement element : TasksUiPlugin.getTaskList().getRootElements()) { if (element != null && element.getHandleIdentifier().equals(handle)) { list.add(adaptable); + remove = false; + break; } } } else if (adaptable instanceof IProject) { IProject project = ResourcesPlugin.getWorkspace() .getRoot() .getProject(((IProject) adaptable).getName()); - if (project != null && project.exists()) { - list.add(project); + if (project == null || !project.exists()) { + remove = true; } } + if (remove) { + iter.remove(); + changed = true; + } + } + if (changed) { + workingSet.setElements(list.toArray(new IAdaptable[list.size()])); } - workingSet.setElements(list.toArray(new IAdaptable[list.size()])); } public boolean contains(IWorkingSet workingSet) { |