diff options
author | mkersten | 2008-05-22 02:59:15 +0000 |
---|---|---|
committer | mkersten | 2008-05-22 02:59:15 +0000 |
commit | bf965350c0c1021d9a56bac98b8c8a397c008afb (patch) | |
tree | 1b3f3dcff8d6fd00ed6962da00910fd793abfda6 | |
parent | 90eca5c971d3f14975e55e1ca9e052d942a4596f (diff) | |
download | org.eclipse.mylyn.tasks-bf965350c0c1021d9a56bac98b8c8a397c008afb.tar.gz org.eclipse.mylyn.tasks-bf965350c0c1021d9a56bac98b8c8a397c008afb.tar.xz org.eclipse.mylyn.tasks-bf965350c0c1021d9a56bac98b8c8a397c008afb.zip |
NEW - bug 230320: [api] extract context externalization from InteractionContextManager
https://bugs.eclipse.org/bugs/show_bug.cgi?id=230320
21 files changed, 184 insertions, 277 deletions
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java index 1dfb8e4d5..80cb4d63e 100644 --- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java @@ -18,7 +18,6 @@ import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.mylyn.context.core.ContextCore; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaReportElement; @@ -26,6 +25,7 @@ import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryQuery; import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask; import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants; import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.LocalAttachment; import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryAttachment; @@ -181,7 +181,7 @@ public class BugzillaRepositoryConnectorTest extends AbstractBugzillaTest { assertNotNull(TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId())); TasksUiPlugin.getTaskListManager().activateTask(task); - File sourceContextFile = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + File sourceContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); assertEquals(SynchronizationState.SYNCHRONIZED, task.getSynchronizationState()); sourceContextFile.createNewFile(); sourceContextFile.deleteOnExit(); @@ -511,7 +511,7 @@ public class BugzillaRepositoryConnectorTest extends AbstractBugzillaTest { assertNotNull(TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId())); TasksUiPlugin.getTaskListManager().activateTask(task); - File sourceContextFile = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + File sourceContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); assertEquals(SynchronizationState.SYNCHRONIZED, task.getSynchronizationState()); sourceContextFile.createNewFile(); sourceContextFile.deleteOnExit(); @@ -864,7 +864,7 @@ public class BugzillaRepositoryConnectorTest extends AbstractBugzillaTest { /** * @param enableDeadline - * bugzilla 218 doesn't support deadlines + * bugzilla 218 doesn't support deadlines */ protected void timeTracker(int taskid, boolean enableDeadline) throws Exception { BugzillaTask bugtask = generateLocalTaskAndDownload("" + taskid); diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ScheduledPresentationTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ScheduledPresentationTest.java index 9b0cda8d2..eb3266b76 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ScheduledPresentationTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ScheduledPresentationTest.java @@ -32,7 +32,7 @@ public class ScheduledPresentationTest extends TestCase { @Override protected void setUp() throws Exception { ContextCorePlugin.getContextManager().getActivityMetaContext().reset(); - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); TasksUiPlugin.getTaskListManager().resetTaskList(); TasksUiPlugin.getExternalizationManager().requestSave(); } diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityTimingTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityTimingTest.java index b46a41630..f5f3fa9f9 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityTimingTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityTimingTest.java @@ -50,7 +50,7 @@ public class TaskActivityTimingTest extends TestCase { activityManager = TasksUi.getTaskActivityManager(); taskList = TasksUiInternal.getTaskList(); ContextCorePlugin.getContextManager().getActivityMetaContext().reset(); - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); TasksUiPlugin.getTaskActivityMonitor().reloadActivityTime(); } @@ -175,7 +175,7 @@ public class TaskActivityTimingTest extends TestCase { // Half gone since end date is exclusive (removes up to but not including hour) assertEquals(expectedTotalTime, activityManager.getElapsedTime(task1)); - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); ContextCore.getContextManager().loadActivityMetaContext(); TasksUiPlugin.getTaskActivityMonitor().reloadActivityTime(); @@ -449,7 +449,7 @@ public class TaskActivityTimingTest extends TestCase { assertEquals(26000, TasksUiPlugin.getTaskActivityManager().getElapsedTime(task1)); - ContextCorePlugin.getContextManager().saveActivityContext(); + ContextCorePlugin.getContextManager().saveActivityMetaContext(); ContextCorePlugin.getContextManager().loadActivityMetaContext(); TasksUiPlugin.getTaskActivityMonitor().reloadActivityTime(); @@ -485,7 +485,7 @@ public class TaskActivityTimingTest extends TestCase { TasksUiPlugin.getTaskActivityMonitor().parseInteractionEvent(event2, false); assertEquals(20000, TasksUiPlugin.getTaskActivityManager().getElapsedTime(task1)); - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); ContextCore.getContextManager().loadActivityMetaContext(); TasksUiPlugin.getTaskActivityMonitor().reloadActivityTime(); @@ -612,7 +612,7 @@ public class TaskActivityTimingTest extends TestCase { assertEquals(4, ContextCore.getContextManager().getActivityMetaContext().getInteractionHistory().size()); TasksUiPlugin.getTaskListManager().saveTaskList(); - ContextCorePlugin.getContextManager().saveActivityContext(); + ContextCorePlugin.getContextManager().saveActivityMetaContext(); ContextCorePlugin.getContextManager().getActivityMetaContext().reset(); assertEquals(0, ContextCore.getContextManager().getActivityMetaContext().getInteractionHistory().size()); ContextCore.getContextManager().loadActivityMetaContext(); @@ -713,7 +713,7 @@ public class TaskActivityTimingTest extends TestCase { events.add(activityEvent1); events.add(activityEvent2); events.add(activityEvent3); - List<InteractionEvent> collapsedEvents = ContextCore.getContextManager().collapseEventsByHour(events); + List<InteractionEvent> collapsedEvents = ContextCorePlugin.getContextManager().collapseEventsByHour(events); assertEquals(2, collapsedEvents.size()); } @@ -823,7 +823,7 @@ public class TaskActivityTimingTest extends TestCase { TasksUiPlugin.getTaskListManager().deactivateAllTasks(); assertEquals(4, ContextCore.getContextManager().getActivityMetaContext().getInteractionHistory().size()); TasksUiPlugin.getTaskListManager().saveTaskList(); - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); ContextCorePlugin.getContextManager().getActivityMetaContext().reset(); assertEquals(0, ContextCore.getContextManager().getActivityMetaContext().getInteractionHistory().size()); TasksUiPlugin.getTaskActivityMonitor().reloadActivityTime(); diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java index ea0bec784..2b26a3976 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java @@ -51,7 +51,7 @@ public class TaskDataExportTest extends AbstractContextTest { super.setUp(); removeFiles(new File(TasksUiPlugin.getDefault().getDataDirectory())); - ContextCore.getContextStore().init(); +// ContextCore.getContextStore().init(); // Create the export wizard wizard = new TaskDataExportWizard(); @@ -72,15 +72,15 @@ public class TaskDataExportTest extends AbstractContextTest { // Create a task and context with an interaction event to be saved task1 = TasksUiInternal.createNewLocalTask("Export Test Task"); manager.getTaskList().addTask(task1); - mockContext = ContextCorePlugin.getContextManager().loadContext(task1.getHandleIdentifier()); + mockContext = (InteractionContext) ContextCorePlugin.getContextStore().loadContext(task1.getHandleIdentifier()); InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.EDIT, "structureKind", "handle", "originId"); mockContext.parseEvent(event); ContextCorePlugin.getContextManager().internalActivateContext(mockContext); // Save the context file and check that it exists - assertTrue(ContextCore.getContextStore().getContextDirectory().exists()); - ContextCore.getContextManager().saveContext(mockContext.getHandleIdentifier()); - File taskFile = ContextCore.getContextManager().getFileForContext(task1.getHandleIdentifier()); + assertTrue(ContextCorePlugin.getContextStore().getContextDirectory().exists()); + ContextCore.getContextStore().saveContext(mockContext.getHandleIdentifier()); + File taskFile = ContextCorePlugin.getContextStore().getFileForContext(task1.getHandleIdentifier()); assertTrue(ContextCore.getContextManager().hasContext(task1.getHandleIdentifier())); assertTrue(taskFile.exists()); } diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskExportImportTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskExportImportTest.java index cbfc305ff..81d385ed2 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskExportImportTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskExportImportTest.java @@ -18,6 +18,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.eclipse.mylyn.context.core.ContextCore; +import org.eclipse.mylyn.context.core.IInteractionContext; import org.eclipse.mylyn.context.core.IInteractionContextManager; import org.eclipse.mylyn.context.tests.AbstractContextTest; import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; @@ -42,7 +43,7 @@ public class TaskExportImportTest extends AbstractContextTest { protected void setUp() throws Exception { super.setUp(); removeFiles(new File(TasksUiPlugin.getDefault().getDataDirectory())); - ContextCore.getContextStore().init(); +// ContextCore.getContextStore().init(); // Create test export destination directory dest = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator + "TestDir"); @@ -71,15 +72,16 @@ public class TaskExportImportTest extends AbstractContextTest { taskList.addTask(task, taskList.getDefaultCategory()); assertTrue(taskList.getAllTasks().size() > 0); - InteractionContext mockContext = ContextCorePlugin.getContextManager().loadContext(task.getHandleIdentifier()); + InteractionContext mockContext = (InteractionContext) ContextCorePlugin.getContextStore().loadContext( + task.getHandleIdentifier()); ContextCorePlugin.getContextManager().internalActivateContext(mockContext); InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.EDIT, "structureKind", "handle", "originId"); mockContext.parseEvent(event); ContextCore.getContextManager().deactivateContext(mockContext.getHandleIdentifier()); - assertTrue(ContextCore.getContextStore().getContextDirectory().exists()); - ContextCore.getContextManager().saveContext(mockContext.getHandleIdentifier()); + assertTrue(ContextCorePlugin.getContextStore().getContextDirectory().exists()); + ContextCore.getContextStore().saveContext(mockContext.getHandleIdentifier()); assertTrue(ContextCore.getContextManager().hasContext(task.getHandleIdentifier())); File outFile = new File(dest + File.separator + "local-task.xml.zip"); @@ -111,8 +113,8 @@ public class TaskExportImportTest extends AbstractContextTest { // load data back List<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskListWriter().readTasks(outFile); - InteractionContext loadedContext = ContextCorePlugin.getContextManager().loadContext( - task.getHandleIdentifier(), outFile); + IInteractionContext loadedContext = ContextCore.getContextStore().importContext(task.getHandleIdentifier(), + outFile); // check with original one assertEquals("There is 1 task loaded", 1, tasks.size()); @@ -123,10 +125,10 @@ public class TaskExportImportTest extends AbstractContextTest { for (AbstractTask loadedTask : tasks) { taskList.addTask(loadedTask); } - ContextCorePlugin.getContextManager().importContext(loadedContext); + ContextCorePlugin.getContextStore().importContext(loadedContext); // check that context was imported and is the same as original one - InteractionContext savedContext = ContextCorePlugin.getContextManager().loadContext(task.getHandleIdentifier()); + IInteractionContext savedContext = ContextCorePlugin.getContextStore().loadContext(task.getHandleIdentifier()); assertEquals("Saved context is the same as original one", mockContext, savedContext); assertEquals("Saved task is the same as original one", task, taskList.getTask(task.getHandleIdentifier())); 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 67be91efc..0a5efb7ca 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 @@ -186,12 +186,12 @@ public class TaskListManagerTest extends TestCase { } public void testMigrateTaskContextFiles() throws IOException { - File fileA = ContextCore.getContextManager().getFileForContext("http://a-1"); + File fileA = ContextCorePlugin.getContextStore().getFileForContext("http://a-1"); fileA.createNewFile(); fileA.deleteOnExit(); assertTrue(fileA.exists()); runRepositoryUrlOperation("http://a", "http://b"); - File fileB = ContextCore.getContextManager().getFileForContext("http://b-1"); + File fileB = ContextCorePlugin.getContextStore().getFileForContext("http://b-1"); assertTrue(fileB.exists()); assertFalse(fileA.exists()); } diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml index a6d5f9a4f..44750c71d 100644 --- a/org.eclipse.mylyn.tasks.ui/plugin.xml +++ b/org.eclipse.mylyn.tasks.ui/plugin.xml @@ -10,9 +10,11 @@ <extension point="org.eclipse.mylyn.context.core.bridges"> + <!-- <contextStore - class="org.eclipse.mylyn.internal.tasks.ui.WorkspaceAwareContextStore"> + class="org.eclipse.mylyn.internal.tasks.ui.LocalContextStore"> </contextStore> + --> </extension> <extension point="org.eclipse.mylyn.tasks.ui.duplicateDetectors"> diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java index 75e38bd38..701288c4a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java @@ -32,7 +32,7 @@ public class ActivityExternalizationParticipant extends AbstractExternalizationP Assert.isNotNull(context); switch (context.getKind()) { case SAVE: - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); setDirty(false); break; case LOAD: @@ -80,7 +80,7 @@ public class ActivityExternalizationParticipant extends AbstractExternalizationP @Override public void save(String rootPath, IProgressMonitor monitor) throws CoreException { - ContextCore.getContextManager().saveActivityContext(); + ContextCore.getContextManager().saveActivityMetaContext(); setDirty(false); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AttachmentUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AttachmentUtil.java index 2ef5eb5d0..18e9bd72f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AttachmentUtil.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AttachmentUtil.java @@ -31,6 +31,7 @@ import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.context.core.ContextCore; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.TaskAttachment; import org.eclipse.mylyn.internal.tasks.core.TaskDataStorageManager; @@ -73,11 +74,13 @@ public class AttachmentUtil { * * @return false, if operation is not supported by repository */ + @SuppressWarnings("restriction") @Deprecated public static boolean attachContext(AbstractAttachmentHandler attachmentHandler, TaskRepository repository, ITask task, String longComment, IProgressMonitor monitor) throws CoreException { - ContextCore.getContextManager().saveContext(task.getHandleIdentifier()); - final File sourceContextFile = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + ContextCore.getContextStore().saveContext(task.getHandleIdentifier()); + final File sourceContextFile = ContextCorePlugin.getContextStore() + .getFileForContext(task.getHandleIdentifier()); SynchronizationState previousState = task.getSynchronizationState(); @@ -105,8 +108,8 @@ public class AttachmentUtil { public static boolean postContext(AbstractRepositoryConnector connector, TaskRepository repository, ITask task, String comment, IProgressMonitor monitor) throws CoreException { AbstractTaskAttachmentHandler attachmentHandler = connector.getTaskAttachmentHandler(); - ContextCore.getContextManager().saveContext(task.getHandleIdentifier()); - File file = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + ContextCore.getContextStore().saveContext(task.getHandleIdentifier()); + File file = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); if (file != null && file.exists()) { FileTaskAttachmentSource attachment = new FileTaskAttachmentSource(file); attachment.setDescription(CONTEXT_DESCRIPTION); @@ -308,6 +311,7 @@ public class AttachmentUtil { return ContextCore.getContextManager().hasContext(task.getHandleIdentifier()); } + @SuppressWarnings("restriction") @Deprecated public static boolean isContext(RepositoryAttachment attachment) { return CONTEXT_DESCRIPTION.equals(attachment.getDescription()) @@ -324,12 +328,13 @@ public class AttachmentUtil { * * @return false, if operation is not supported by repository */ + @SuppressWarnings("restriction") @Deprecated public static boolean retrieveContext(AbstractAttachmentHandler attachmentHandler, TaskRepository repository, ITask task, RepositoryAttachment attachment, String destinationPath, IProgressMonitor monitor) throws CoreException { - File destinationContextFile = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + File destinationContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); // TODO: add functionality for not overwriting previous context if (destinationContextFile.exists()) { @@ -360,7 +365,7 @@ public class AttachmentUtil { public static boolean getContext(AbstractRepositoryConnector connector, TaskRepository repository, ITask task, TaskAttribute attribute, IProgressMonitor monitor) throws CoreException { AbstractTaskAttachmentHandler attachmentHandler = connector.getTaskAttachmentHandler(); - File file = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); + File file = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); try { FileOutputStream out = new FileOutputStream(file); try { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java index e2ec13c2e..c2756740c 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java @@ -53,4 +53,7 @@ public interface ITasksUiPreferenceConstants { public static final String LOCAL_SUB_TASKS_ENABLED = "org.eclipse.mylyn.tasks.ui.subtasks.local"; + // NOTE: legacy name, do not change + public static final String PREF_DATA_DIR = "org.eclipse.mylyn.data.dir"; + } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RefactorRepositoryUrlOperation.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RefactorRepositoryUrlOperation.java index 2cae783bf..921f53e68 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RefactorRepositoryUrlOperation.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RefactorRepositoryUrlOperation.java @@ -67,6 +67,7 @@ public class RefactorRepositoryUrlOperation extends TaskListModifyOperation { } } + @SuppressWarnings("restriction") public void refactorContextFileNames() { File dataDir = new File(TasksUiPlugin.getDefault().getDataDirectory(), ITasksCoreConstants.CONTEXTS_DIRECTORY); @@ -86,7 +87,7 @@ public class RefactorRepositoryUrlOperation extends TaskListModifyOperation { if (oldUrl.equals(storedUrl)) { String id = RepositoryTaskHandleUtil.getTaskId(storedHandle); String newHandle = RepositoryTaskHandleUtil.getHandle(newUrl, id); - File newFile = ContextCore.getContextManager().getFileForContext(newHandle); + File newFile = ContextCorePlugin.getContextStore().getFileForContext(newHandle); file.renameTo(newFile); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java index 58cd289d1..8292340c1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java @@ -33,7 +33,6 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.mylyn.internal.context.core.ContextPreferenceContstants; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; @@ -279,7 +278,7 @@ public class TaskListBackupManager implements IPropertyChangeListener { } public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(ContextPreferenceContstants.PREF_DATA_DIR)) { + if (event.getProperty().equals(ITasksUiPreferenceConstants.PREF_DATA_DIR)) { if (export != null) { export.cancel(); export = null; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java index d7faf6bd6..48adc64f7 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java @@ -49,7 +49,7 @@ import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.net.WebClientLog; import org.eclipse.mylyn.commons.net.WebUtil; import org.eclipse.mylyn.context.core.ContextCore; -import org.eclipse.mylyn.internal.context.core.ContextPreferenceContstants; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.provisional.commons.ui.AbstractNotification; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonColors; import org.eclipse.mylyn.internal.tasks.core.AbstractSearchHandler; @@ -485,7 +485,7 @@ public class TasksUiPlugin extends AbstractUIPlugin { // initialize framework and settings WebUtil.init(); WebClientLog.setLoggingEnabled(DEBUG_HTTPCLIENT); - initializeDefaultPreferences(getPreferenceStore()); + initializePreferences(getPreferenceStore()); File dataDir = new File(getDataDirectory()); dataDir.mkdirs(); @@ -714,7 +714,7 @@ public class TasksUiPlugin extends AbstractUIPlugin { } public String getDataDirectory() { - return getPreferenceStore().getString(ContextPreferenceContstants.PREF_DATA_DIR); + return getPreferenceStore().getString(ITasksUiPreferenceConstants.PREF_DATA_DIR); } /** @@ -723,15 +723,16 @@ public class TasksUiPlugin extends AbstractUIPlugin { * * @throws CoreException */ + @SuppressWarnings("restriction") public void setDataDirectory(final String newPath, IProgressMonitor monitor) throws CoreException { - externalizationManager.saveNow(monitor); - // TODO: backup now? - //TasksUiPlugin.getBackupManager().backupNow(true); loadDataDirectory(newPath); - getPreferenceStore().setValue(ContextPreferenceContstants.PREF_DATA_DIR, newPath); - ContextCore.getContextStore().contextStoreMoved(); - + getPreferenceStore().setValue(ITasksUiPreferenceConstants.PREF_DATA_DIR, newPath); + File newFile = new File(newPath, ITasksCoreConstants.CONTEXTS_DIRECTORY); + if (!newFile.exists()) { + newFile.mkdirs(); + } + ContextCorePlugin.getContextStore().setContextDirectory(newFile); } public void reloadDataDirectory() throws CoreException { @@ -786,7 +787,11 @@ public class TasksUiPlugin extends AbstractUIPlugin { /** * called on startup and when the mylyn data structures are reloaded from disk */ + @SuppressWarnings("restriction") private void loadDataSources() { + File storeFile = getContextStoreDir(); + ContextCorePlugin.getContextStore().setContextDirectory(storeFile); + externalizationManager.reLoad(); // TODO: Move management of template repositories to TaskRepositoryManager loadTemplateRepositories(); @@ -797,9 +802,16 @@ public class TasksUiPlugin extends AbstractUIPlugin { taskActivityManager.reloadPlanningData(); } - @Override - protected void initializeDefaultPreferences(IPreferenceStore store) { - store.setDefault(ContextPreferenceContstants.PREF_DATA_DIR, getDefaultDataDirectory()); + private File getContextStoreDir() { + File storeFile = new File(getDataDirectory(), ITasksCoreConstants.CONTEXTS_DIRECTORY); + if (!storeFile.exists()) { + storeFile.mkdirs(); + } + return storeFile; + } + + private void initializePreferences(IPreferenceStore store) { + store.setDefault(ITasksUiPreferenceConstants.PREF_DATA_DIR, getDefaultDataDirectory()); store.setDefault(ITasksUiPreferenceConstants.GROUP_SUBTASKS, true); store.setDefault(ITasksUiPreferenceConstants.NOTIFICATIONS_ENABLED, true); store.setDefault(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P5.toString()); @@ -962,10 +974,6 @@ public class TasksUiPlugin extends AbstractUIPlugin { return overlayIcons.get(repositoryType); } -// public boolean isInitialized() { -// return initialized; -// } - public IHyperlinkDetector[] getTaskHyperlinkDetectors() { return hyperlinkDetectors.toArray(new IHyperlinkDetector[1]); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java deleted file mode 100644 index 7d947a12a..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui; - -import java.io.File; - -import org.eclipse.mylyn.context.core.AbstractContextStore; -import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; - -/** - * @author Mik Kersten - */ -public class WorkspaceAwareContextStore extends AbstractContextStore { - - private File rootDirectory; - - private File contextDirectory; - - @Override - public synchronized void init() { - rootDirectory = new File(TasksUiPlugin.getDefault().getDataDirectory()); - if (!rootDirectory.exists()) { - rootDirectory.mkdir(); - } - - contextDirectory = new File(rootDirectory, ITasksCoreConstants.CONTEXTS_DIRECTORY); - if (!contextDirectory.exists()) { - contextDirectory.mkdir(); - } - } - - @Override - public File getRootDirectory() { - return rootDirectory; - } - - @Override - public File getContextDirectory() { - return contextDirectory; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskImportAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskImportAction.java index d5ff7e3ec..75b2573be 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskImportAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskImportAction.java @@ -9,25 +9,18 @@ package org.eclipse.mylyn.internal.tasks.ui.actions; import java.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.Collection; import java.util.Set; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; -import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; -import org.eclipse.mylyn.internal.context.core.InteractionContext; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; -import org.eclipse.mylyn.internal.tasks.core.TaskList; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.ITasksUiConstants; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewActionDelegate; @@ -65,23 +58,14 @@ public class TaskImportAction extends Action implements IViewActionDelegate { if (path != null) { File file = new File(path); if (file.isFile()) { - - Map<AbstractTask, InteractionContext> taskContexts = new HashMap<AbstractTask, InteractionContext>(); - - List<AbstractTask> readTasks = TasksUiPlugin.getTaskListManager().getTaskListWriter().readTasks(file); - for (AbstractTask task : readTasks) { - // deactivate all tasks - task.setActive(false); - taskContexts.put(task, ContextCorePlugin.getContextManager().loadContext( - task.getHandleIdentifier(), file)); - } Set<TaskRepository> repositories = TasksUiPlugin.getTaskListManager() .getTaskListWriter() .readRepositories(file); - - if (taskContexts.size() > 0) { - importTasks(taskContexts, repositories, shell); - refreshTaskListView(); + Collection<AbstractTask> readTasks = TasksUiPlugin.getTaskListManager().getTaskListWriter().readTasks( + file); + if (readTasks.size() > 0) { + TasksUiInternal.importTasks(readTasks, repositories, file, shell); +// refreshTaskListView(); } else { MessageDialog.openError(shell, "Task Import Error", "The specified file is not an exported task. Please, check that you have provided the correct file."); @@ -91,39 +75,4 @@ public class TaskImportAction extends Action implements IViewActionDelegate { } return; } - - public void refreshTaskListView() { - if (TaskListView.getFromActivePerspective() != null) { - TaskListView.getFromActivePerspective().refresh(); - } - } - - /** - * @param queries - * @param repositories - * @param shell - * @return true if any task imported - */ - public void importTasks(Map<AbstractTask, InteractionContext> taskContexts, Set<TaskRepository> repositories, - Shell shell) { - TasksUiPlugin.getRepositoryManager().insertRepositories(repositories, - TasksUiPlugin.getDefault().getRepositoriesFilePath()); - - for (AbstractTask loadedTask : taskContexts.keySet()) { - TaskList taskList = TasksUiPlugin.getTaskList(); - if (taskList.getTask(loadedTask.getHandleIdentifier()) != null) { - boolean confirmed = MessageDialog.openConfirm(shell, ITasksUiConstants.TITLE_DIALOG, "Task '" - + loadedTask.getSummary() - + "' already exists. Do you want to override it's context with the source?"); - if (confirmed) { - ContextCorePlugin.getContextManager().importContext(taskContexts.get(loadedTask)); - } - } else { - ContextCorePlugin.getContextManager().importContext(taskContexts.get(loadedTask)); - TasksUiInternal.getTaskList().addTask(loadedTask); - } - } - - } - } 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 33599a105..1807238f4 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 @@ -8,7 +8,6 @@ package org.eclipse.mylyn.internal.tasks.ui.editors; -import java.io.File; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; @@ -24,7 +23,6 @@ import org.eclipse.jface.text.TextEvent; import org.eclipse.jface.text.TextViewer; import org.eclipse.mylyn.commons.core.DateUtil; import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.context.core.ContextCore; import org.eclipse.mylyn.internal.provisional.commons.ui.AbstractRetrieveTitleFromUrlJob; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; import org.eclipse.mylyn.internal.provisional.commons.ui.DatePicker; @@ -33,9 +31,9 @@ import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector; import org.eclipse.mylyn.internal.tasks.core.LocalTask; import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; +import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.ScheduleDatePicker; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.actions.ToggleTaskActivationAction; import org.eclipse.mylyn.internal.tasks.ui.deprecated.TaskFormPage; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; @@ -887,41 +885,6 @@ public class TaskPlanningEditor extends TaskFormPage { return completionDateString; } - // TODO: unused, delete? - void createResourcesSection(Composite parent) { - Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); - section.setText("Resources"); - section.setLayout(new GridLayout()); - section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - section.addExpansionListener(new IExpansionListener() { - public void expansionStateChanging(ExpansionEvent e) { - form.reflow(true); - } - - public void expansionStateChanged(ExpansionEvent e) { - form.reflow(true); - } - }); - - Composite container = toolkit.createComposite(section); - section.setClient(container); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - container.setLayout(layout); - container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - toolkit.createLabel(container, "Task context file:"); - File contextFile = ContextCore.getContextManager().getFileForContext(task.getHandleIdentifier()); - if (contextFile != null) { - pathText = toolkit.createText(container, contextFile.getAbsolutePath(), SWT.NONE); - pathText.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); - GridDataFactory.fillDefaults().hint(400, SWT.DEFAULT).applyTo(pathText); - pathText.setEditable(false); - pathText.setEnabled(true); - } - toolkit.paintBordersFor(container); - } - @Override public void dispose() { if (timingListener != null) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportOperation.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportOperation.java index 7504b603a..a7db9699f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportOperation.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportOperation.java @@ -30,6 +30,7 @@ import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.context.core.ContextCore; import org.eclipse.mylyn.context.core.IInteractionContextManager; import org.eclipse.mylyn.internal.commons.core.ZipFileUtil; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; @@ -44,7 +45,7 @@ import org.eclipse.mylyn.tasks.core.ITask; * @author Mik Kersten * @author Rob Elves * - * TODO: Move into internal.tasks.core + * TODO: Move into internal.tasks.core */ public class TaskDataExportOperation implements IRunnableWithProgress { @@ -203,7 +204,7 @@ public class TaskDataExportOperation implements IRunnableWithProgress { // copy } - File sourceTaskContextFile = ContextCore.getContextManager().getFileForContext( + File sourceTaskContextFile = ContextCorePlugin.getContextStore().getFileForContext( task.getHandleIdentifier()); File destTaskFile = new File(destinationDirectory + File.separator diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListElementImporter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListElementImporter.java index 98a635d71..2ff685e25 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListElementImporter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListElementImporter.java @@ -44,7 +44,6 @@ import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; -import org.eclipse.mylyn.internal.context.core.InteractionContext; import org.eclipse.mylyn.internal.context.core.InteractionContextExternalizer; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; @@ -611,7 +610,7 @@ public class TaskListElementImporter { /** * @param Query - * document to read. + * document to read. */ public List<RepositoryQuery> readQueryDocument(Document doc) { List<RepositoryQuery> queries = new ArrayList<RepositoryQuery>(); @@ -681,8 +680,8 @@ public class TaskListElementImporter { writeTaskList(doc, outputStream); // write context data - InteractionContext context = ContextCorePlugin.getContextManager().loadContext(task.getHandleIdentifier()); - contextExternalizer.writeContext(context, outputStream); + ContextCorePlugin.getContextStore().export(task.getHandleIdentifier(), outputStream); + if (repositories.size() > 0) { repositoriesExternalizer.writeRepositories(repositories, outputStream); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java index ff552d5f7..c91487db9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java @@ -8,9 +8,11 @@ package org.eclipse.mylyn.internal.tasks.ui.util; +import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -39,6 +41,7 @@ import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.mylyn.commons.core.CoreUtil; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.net.Policy; +import org.eclipse.mylyn.context.core.ContextCore; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.internal.tasks.core.ITaskJobFactory; @@ -680,4 +683,30 @@ public class TasksUiInternal { } } + public static void importTasks(Collection<AbstractTask> tasks, Set<TaskRepository> repositories, File zipFile, + Shell shell) { + TasksUiPlugin.getRepositoryManager().insertRepositories(repositories, + TasksUiPlugin.getDefault().getRepositoriesFilePath()); + + for (AbstractTask loadedTask : tasks) { + // need to deactivate since activation is managed centrally + loadedTask.setActive(false); + + TaskList taskList = TasksUiPlugin.getTaskList(); + if (taskList.getTask(loadedTask.getHandleIdentifier()) != null) { + boolean confirmed = MessageDialog.openConfirm(shell, "Import Task", "Task '" + loadedTask.getSummary() + + "' already exists. Do you want to override it's context with the source?"); + if (confirmed) { + // ContextCore.getContextStore().importContext(taskContexts.get(loadedTask)); + ContextCore.getContextStore().importContext(loadedTask.getHandleIdentifier(), zipFile); + } + } else { + // ContextCore.getContextStore().importContext(taskContexts.get(loadedTask)); + ContextCore.getContextStore().importContext(loadedTask.getHandleIdentifier(), zipFile); + getTaskList().addTask(loadedTask); + } + } + + } + } 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 dfbce047e..233d6c410 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 @@ -12,10 +12,8 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.CoreException; @@ -28,9 +26,6 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.context.core.ContextCore; -import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; -import org.eclipse.mylyn.internal.context.core.InteractionContext; import org.eclipse.mylyn.internal.provisional.commons.ui.AbstractRetrieveTitleFromUrlJob; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; @@ -40,19 +35,16 @@ import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; import org.eclipse.mylyn.internal.tasks.core.TaskCategory; import org.eclipse.mylyn.internal.tasks.core.UncategorizedTaskContainer; import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; +import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.TaskListModifyOperation; import org.eclipse.mylyn.internal.tasks.ui.TaskTransfer; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.actions.QueryImportAction; -import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; -import org.eclipse.mylyn.internal.tasks.ui.actions.TaskImportAction; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.ITaskElement; import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.ITasksUiConstants; import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.tasks.ui.TasksUiUtil; import org.eclipse.swt.dnd.DND; @@ -115,71 +107,72 @@ public class TaskListDropAdapter extends ViewerDropAdapter { tasksToMove.add(newTask); } else if (FileTransfer.getInstance().isSupportedType(currentTransfer)) { // transfer the context if the target is a Task - if (getCurrentTarget() instanceof ITask) { - AbstractTask targetTask = (AbstractTask) getCurrentTarget(); - final String[] names = (String[]) data; - boolean confirmed = MessageDialog.openConfirm(getViewer().getControl().getShell(), - ITasksUiConstants.TITLE_DIALOG, - "Overwrite the context of the target task with the source's?"); - if (confirmed) { - String path = names[0]; - File file = new File(path); - if (ContextCore.getContextManager().isValidContextFile(file)) { - ContextCore.getContextManager().copyContext(targetTask.getHandleIdentifier(), file); - new TaskActivateAction().run(targetTask); - } - } - } else { - // otherwise it is queries or tasks - final String[] names = (String[]) data; - List<RepositoryQuery> queries = new ArrayList<RepositoryQuery>(); - Map<AbstractTask, InteractionContext> taskContexts = new HashMap<AbstractTask, InteractionContext>(); - Set<TaskRepository> repositories = new HashSet<TaskRepository>(); - - for (String path : names) { - File file = new File(path); - if (file.isFile()) { - List<RepositoryQuery> readQueries; - try { - readQueries = TasksUiPlugin.getTaskListManager().getTaskListWriter().readQueries( - file); - if (readQueries.size() > 0) { - queries.addAll(readQueries); - repositories.addAll(TasksUiPlugin.getTaskListManager() - .getTaskListWriter() - .readRepositories(file)); - } else { - List<AbstractTask> readTasks = TasksUiPlugin.getTaskListManager() - .getTaskListWriter() - .readTasks(file); - for (AbstractTask task : readTasks) { - taskContexts.put(task, ContextCorePlugin.getContextManager().loadContext( - task.getHandleIdentifier(), file)); - } - repositories.addAll(TasksUiPlugin.getTaskListManager() - .getTaskListWriter() - .readRepositories(file)); - } - } catch (IOException e) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - MessageDialog.openError(null, "Query Import Error", - "The specified file is not an exported query. Please, check that you have provided the correct file."); - } - }); +// if (getCurrentTarget() instanceof ITask) { +// final AbstractTask targetTask = (AbstractTask) getCurrentTarget(); +// final String[] names = (String[]) data; +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// +// public void run() { +// boolean confirmed = MessageDialog.openConfirm(getViewer().getControl().getShell(), +// "Task Import", "Overwrite the context of the target task with the source's?"); +// if (confirmed) { +// String path = names[0]; +// File file = new File(path); +// boolean succeeded = ContextCore.getContextStore().copyContext(file, +// targetTask.getHandleIdentifier()); +// if (succeeded) { +// new TaskActivateAction().run(targetTask); +// } +// } +// } +// }); +// } else { + // otherwise it is queries or tasks + final String[] names = (String[]) data; + for (String path : names) { + final File file = new File(path); + final List<RepositoryQuery> queries = new ArrayList<RepositoryQuery>(); + final Set<TaskRepository> repositories = new HashSet<TaskRepository>(); + final List<AbstractTask> readTasks = TasksUiPlugin.getTaskListManager() + .getTaskListWriter() + .readTasks(file); + if (file.isFile()) { + List<RepositoryQuery> readQueries; + try { + readQueries = TasksUiPlugin.getTaskListManager().getTaskListWriter().readQueries(file); + if (readQueries.size() > 0) { + queries.addAll(readQueries); + repositories.addAll(TasksUiPlugin.getTaskListManager() + .getTaskListWriter() + .readRepositories(file)); + } else { + repositories.addAll(TasksUiPlugin.getTaskListManager() + .getTaskListWriter() + .readRepositories(file)); } + } catch (IOException e) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + MessageDialog.openError(null, "Query Import Error", + "The specified file is not an exported query. Please, check that you have provided the correct file."); + } + }); } - } - if (queries.size() > 0) { - new QueryImportAction().importQueries(queries, repositories, getViewer().getControl() - .getShell()); - } else { - TaskImportAction action = new TaskImportAction(); - action.importTasks(taskContexts, repositories, getViewer().getControl().getShell()); - action.refreshTaskListView(); - } + // FIXME: remove async exec + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + // TODO: we should consider batching this up + if (queries.size() > 0) { + new QueryImportAction().importQueries(queries, repositories, + getViewer().getControl().getShell()); + } else { + TasksUiInternal.importTasks(readTasks, repositories, file, getViewer().getControl() + .getShell()); + } + } + }); } } @@ -279,7 +272,7 @@ public class TaskListDropAdapter extends ViewerDropAdapter { /** * @param data - * string containing url and title separated by <quote>\n</quote> + * string containing url and title separated by <quote>\n</quote> * @return true if task succesfully created, false otherwise */ public boolean createTaskFromUrl(Object data) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java index 4a56deade..86ccadbe1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java @@ -21,8 +21,8 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.context.core.ContextCore; import org.eclipse.mylyn.context.core.IInteractionContextManager; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; @@ -153,8 +153,8 @@ public class TaskDataExportWizard extends Wizard implements IExportWizard { if (exportPage.exportTaskContexts()) { for (ITask task : taskContextsToExport) { - File contextFile = ContextCore.getContextManager() - .getFileForContext(task.getHandleIdentifier()); + File contextFile = ContextCorePlugin.getContextStore().getFileForContext( + task.getHandleIdentifier()); File destTaskFile = new File(destDir + File.separator + contextFile.getName()); if (destTaskFile.exists()) { if (!MessageDialog.openConfirm(getShell(), "Confirm File Replace", |