diff options
author | relves | 2010-04-09 00:04:51 +0000 |
---|---|---|
committer | relves | 2010-04-09 00:04:51 +0000 |
commit | fcffd8b8cae02c9a225ab6154e5d030c197d237e (patch) | |
tree | 26183b0bb849c539c8761e2bb66330fb03800fa7 /org.eclipse.mylyn.tasks.ui | |
parent | c3b13a3a7832b9583bf3f8bb2278e5d4168dc272 (diff) | |
download | org.eclipse.mylyn.tasks-fcffd8b8cae02c9a225ab6154e5d030c197d237e.tar.gz org.eclipse.mylyn.tasks-fcffd8b8cae02c9a225ab6154e5d030c197d237e.tar.xz org.eclipse.mylyn.tasks-fcffd8b8cae02c9a225ab6154e5d030c197d237e.zip |
NEW - bug 292445: deactivate active working set on import/restore of Task List
https://bugs.eclipse.org/bugs/show_bug.cgi?id=292445
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
2 files changed, 57 insertions, 24 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java index 4c2ae8043..aaea81722 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java @@ -28,6 +28,7 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.Wizard; import org.eclipse.mylyn.commons.core.CoreUtil; import org.eclipse.mylyn.internal.commons.core.ZipFileUtil; @@ -37,11 +38,13 @@ import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; import org.eclipse.mylyn.internal.tasks.core.externalization.AbstractExternalizationParticipant; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; +import org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater; import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.progress.UIJob; import com.ibm.icu.text.SimpleDateFormat; @@ -89,9 +92,6 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { @Override public boolean performFinish() { - - TasksUi.getTaskActivityManager().deactivateTask(TasksUi.getTaskActivityManager().getActiveTask()); - String sourceZip = importPage.getSourceZipFile(); final File sourceZipFile = new File(sourceZip); @@ -105,14 +105,25 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { return false; } + if (performFinish(sourceZipFile, getContainer())) { + importPage.saveSettings(); + return true; + } else { + return false; + } + } + + public static boolean performFinish(final File sourceZipFile, final IWizardContainer container) { + TasksUi.getTaskActivityManager().deactivateTask(TasksUi.getTaskActivityManager().getActiveTask()); + TasksUiInternal.getTaskList().removeChangeListener(TaskWorkingSetUpdater.getInstance()); + try { - if (getContainer() != null) { - CommonUiUtil.run(getContainer(), new FileCopyJob(sourceZipFile)); + if (container != null) { + CommonUiUtil.run(container, new FileCopyJob(sourceZipFile)); } else { CommonUiUtil.busyCursorWhile(new FileCopyJob(sourceZipFile)); } - importPage.saveSettings(); } catch (CoreException e) { Status status = new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, NLS.bind( "Problems encountered importing task data: {0}", e.getMessage()), e); //$NON-NLS-1$ @@ -121,11 +132,20 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { // canceled } + new UIJob("") { //$NON-NLS-1$ + + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + TasksUiInternal.getTaskList().addChangeListener(TaskWorkingSetUpdater.getInstance()); + return Status.OK_STATUS; + } + }.schedule(); + return true; } /** Job that performs the file copying and zipping */ - class FileCopyJob implements ICoreRunnable { + static class FileCopyJob implements ICoreRunnable { private static final String PREFIX_BACKUP = ".backup-"; //$NON-NLS-1$ @@ -182,6 +202,22 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { } } + private void readTaskListData() { + if (!CoreUtil.TEST_MODE) { + PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { + public void run() { + try { + TasksUiPlugin.getDefault().reloadDataDirectory(); + } catch (CoreException e) { + TasksUiInternal.displayStatus(Messages.TaskDataImportWizard_Import_Error, e.getStatus()); + } + } + }); + } else { + TasksUiPlugin.getDefault().initializeDataSources(); + } + } + /** * Rename existing task list file to avoid loading that instead of the restored old one. */ @@ -207,16 +243,4 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { } - private void readTaskListData() { - PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { - public void run() { - try { - TasksUiPlugin.getDefault().reloadDataDirectory(); - } catch (CoreException e) { - TasksUiInternal.displayStatus(Messages.TaskDataImportWizard_Import_Error, e.getStatus()); - } - } - }); - } - } 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 33f6b6df8..97cc0091c 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 @@ -54,6 +54,8 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang private final List<IWorkingSet> workingSets = new CopyOnWriteArrayList<IWorkingSet>(); + private static TaskWorkingSetUpdater INSTANCE; + private static class TaskWorkingSetDelta { private final IWorkingSet workingSet; @@ -90,6 +92,7 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang } public TaskWorkingSetUpdater() { + INSTANCE = this; TasksUiInternal.getTaskList().addChangeListener(this); ResourcesPlugin.getWorkspace().addResourceChangeListener(this); } @@ -218,14 +221,16 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang // } public static IWorkingSet[] getEnabledSets() { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - IWorkbenchPage page = window.getActivePage(); + Set<IWorkingSet> workingSets = new HashSet<IWorkingSet>(); + Set<IWorkbenchWindow> windows = MonitorUi.getMonitoredWindows(); + for (IWorkbenchWindow iWorkbenchWindow : windows) { + IWorkbenchPage page = iWorkbenchWindow.getActivePage(); if (page != null) { - return page.getWorkingSets(); + workingSets.addAll(Arrays.asList(page.getWorkingSets())); } } - return new IWorkingSet[0]; + + return workingSets.toArray(new IWorkingSet[workingSets.size()]); } /** @@ -341,4 +346,8 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang } } + public static TaskWorkingSetUpdater getInstance() { + return INSTANCE; + } + } |