Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelves2010-04-09 00:04:51 +0000
committerrelves2010-04-09 00:04:51 +0000
commitfcffd8b8cae02c9a225ab6154e5d030c197d237e (patch)
tree26183b0bb849c539c8761e2bb66330fb03800fa7 /org.eclipse.mylyn.tasks.ui
parentc3b13a3a7832b9583bf3f8bb2278e5d4168dc272 (diff)
downloadorg.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')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java62
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java19
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;
+ }
+
}

Back to the top