diff options
author | mkersten | 2006-06-10 02:37:47 +0000 |
---|---|---|
committer | mkersten | 2006-06-10 02:37:47 +0000 |
commit | f40af7a2b3bf3a21e1d2c7844561430369b5d965 (patch) | |
tree | 60ef66a2c114f79c0d9748f593cd441bd7eba5bd /org.eclipse.mylyn.tasks.ui | |
parent | 6f1db2d4a702191c70fd34fb44cdd0bc5758c433 (diff) | |
download | org.eclipse.mylyn.tasks-f40af7a2b3bf3a21e1d2c7844561430369b5d965.tar.gz org.eclipse.mylyn.tasks-f40af7a2b3bf3a21e1d2c7844561430369b5d965.tar.xz org.eclipse.mylyn.tasks-f40af7a2b3bf3a21e1d2c7844561430369b5d965.zip |
Completed: 146362: extract offline synchronization from AbstractRepositoryConnector
https://bugs.eclipse.org/bugs/show_bug.cgi?id=146362
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
5 files changed, 97 insertions, 134 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/OfflineTaskManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/OfflineTaskManager.java index 60cdb961a..6350977a7 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/OfflineTaskManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/OfflineTaskManager.java @@ -502,8 +502,8 @@ public class OfflineTaskManager { // try { RepositoryTaskData item = (RepositoryTaskData) in.readObject(); AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(item.getRepositoryKind()); - if(connector != null) { - AbstractAttributeFactory factory = connector.getAttributeFactory(); + if(connector != null && connector.getOfflineTaskHandler() != null) { + AbstractAttributeFactory factory = connector.getOfflineTaskHandler().getAttributeFactory(); if(factory != null) { item.setAttributeFactory(factory); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskUiUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskUiUtil.java index ab5a92f11..e80c77dc9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskUiUtil.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskUiUtil.java @@ -65,7 +65,7 @@ public class TaskUiUtil { return null; } switch (priorityLevel) { - case P1: + case P1: return TaskListImages.getImage(TaskListImages.PRIORITY_1); case P2: return TaskListImages.getImage(TaskListImages.PRIORITY_2); @@ -79,7 +79,7 @@ public class TaskUiUtil { return null; } } - + public static void closeEditorInActivePage(ITask task) { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (window == null) { @@ -102,15 +102,15 @@ public class TaskUiUtil { public static boolean openRepositoryTask(String repositoryUrl, String taskId, String fullUrl) { boolean opened = false; String handle = AbstractRepositoryTask.getHandle(repositoryUrl, taskId); - ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); - if (task == null) { + ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); + if (task == null) { // search for it for (ITask currTask : MylarTaskListPlugin.getTaskListManager().getTaskList().getAllTasks()) { if (currTask instanceof AbstractRepositoryTask) { - String currUrl = ((AbstractRepositoryTask)currTask).getUrl(); + String currUrl = ((AbstractRepositoryTask) currTask).getUrl(); if (currUrl != null && currUrl.equals(fullUrl)) { task = currTask; - break; + break; } } } @@ -119,19 +119,20 @@ public class TaskUiUtil { TaskUiUtil.refreshAndOpenTaskListElement(task); opened = true; } else { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryForTaskUrl(fullUrl); + AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryForTaskUrl( + fullUrl); if (connector != null) { connector.openRemoteTask(repositoryUrl, taskId); opened = true; } - } - if (!opened) { + } + if (!opened) { TaskUiUtil.openUrl(fullUrl); opened = true; } return opened; } - + public static void refreshAndOpenTaskListElement(ITaskListElement element) { if (element instanceof ITask || element instanceof AbstractQueryHit || element instanceof DateRangeActivityDelegate) { @@ -149,27 +150,28 @@ public class TaskUiUtil { String repositoryKind = repositoryTask.getRepositoryKind(); final AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager() .getRepositoryConnector(repositoryKind); - - TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(repositoryKind, repositoryTask.getRepositoryUrl()); + + TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(repositoryKind, + repositoryTask.getRepositoryUrl()); if (!repository.hasCredentials()) { - MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - MylarTaskListPlugin.TITLE_DIALOG, - "Repository does not have credentials set, verify via " + TaskRepositoriesView.NAME + " view"); + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + MylarTaskListPlugin.TITLE_DIALOG, "Repository does not have credentials set, verify via " + + TaskRepositoriesView.NAME + " view"); } if (connector != null) if (repositoryTask.getTaskData() != null) { TaskUiUtil.openEditor(task, false); - // TODO: Eventually will need to check that this task - // isn't a new report awaiting submission if so - // don't synchronize + // TODO: Eventually will need to check that this task + // isn't a new report awaiting submission if so + // don't synchronize connector.synchronize((AbstractRepositoryTask) task, false, null); } else { Job refreshJob = connector.synchronize((AbstractRepositoryTask) task, true, new JobChangeAdapter() { public void done(IJobChangeEvent event) { - if (repositoryTask.getTaskData() != null) { - TaskUiUtil.openEditor(task, false); - } +// if (repositoryTask.getTaskData() != null) { + TaskUiUtil.openEditor(task, false); +// } } }); if (refreshJob == null) { @@ -188,7 +190,7 @@ public class TaskUiUtil { client.openEditQueryDialog(query); } } - + public static void openEditor(final ITask task, boolean newTask) { openEditor(task, true, newTask); } @@ -247,15 +249,15 @@ public class TaskUiUtil { if (WorkbenchBrowserSupport.getInstance().isInternalWebBrowserAvailable()) { flags = WorkbenchBrowserSupport.AS_EDITOR | WorkbenchBrowserSupport.LOCATION_BAR | WorkbenchBrowserSupport.NAVIGATION_BAR; - + } else { flags = WorkbenchBrowserSupport.AS_EXTERNAL | WorkbenchBrowserSupport.LOCATION_BAR | WorkbenchBrowserSupport.NAVIGATION_BAR; } String title = "Browser"; String tooltip = url; - browser = WorkbenchBrowserSupport.getInstance().createBrowser(flags, MylarTaskListPlugin.PLUGIN_ID + title, - title, tooltip); + browser = WorkbenchBrowserSupport.getInstance().createBrowser(flags, + MylarTaskListPlugin.PLUGIN_ID + title, title, tooltip); browser.openURL(new URL(url)); } } catch (PartInitException e) { @@ -274,7 +276,7 @@ public class TaskUiUtil { for (int i = 0; i < editorReferences.length; i++) { IEditorPart editor = editorReferences[i].getEditor(false); if (editor instanceof MylarTaskEditor) { - TaskEditorInput input = (TaskEditorInput) ((MylarTaskEditor)editor).getEditorInput(); + TaskEditorInput input = (TaskEditorInput) ((MylarTaskEditor) editor).getEditorInput(); if (input.getTask() instanceof AbstractRepositoryTask) { repositoryTaskEditors.add((MylarTaskEditor) editor); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java index 398fea3c2..2b01684f2 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java @@ -34,7 +34,6 @@ import org.eclipse.jface.wizard.IWizard; import org.eclipse.mylar.internal.core.util.DateUtil; import org.eclipse.mylar.internal.core.util.MylarStatusHandler; import org.eclipse.mylar.internal.core.util.ZipFileUtil; -import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory; import org.eclipse.mylar.internal.tasklist.OfflineTaskManager; import org.eclipse.mylar.internal.tasklist.RepositoryAttachment; import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; @@ -65,20 +64,26 @@ public abstract class AbstractRepositoryConnector { protected List<String> supportedVersions; - protected AbstractAttributeFactory attributeFactory; - protected boolean forceSyncExecForTesting = false; private boolean updateLocalCopy = false; - public abstract boolean canCreateTaskFromKey(); - - public abstract boolean canCreateNewTask(); + /** + * @return null if not supported + */ + public abstract IAttachmentHandler getAttachmentHandler(); - protected abstract IAttachmentHandler getAttachmentHandler(); + /** + * @return null if not supported + */ + public abstract IOfflineTaskHandler getOfflineTaskHandler(); public abstract String getRepositoryUrlFromTaskUrl(String url); + public abstract boolean canCreateTaskFromKey(); + + public abstract boolean canCreateNewTask(); + /** * Implementors must execute query synchronously. * @@ -90,8 +95,6 @@ public abstract class AbstractRepositoryConnector { */ public abstract List<AbstractQueryHit> performQuery(AbstractRepositoryQuery query, IProgressMonitor monitor, MultiStatus queryStatus); - - protected abstract RepositoryTaskData downloadTaskData(AbstractRepositoryTask repositoryTask) throws CoreException; public abstract String getLabel(); @@ -105,7 +108,6 @@ public abstract class AbstractRepositoryConnector { * identifier, e.g. "123" bug Bugzilla bug 123 * @return null if task could not be created */ - public abstract ITask createTaskFromExistingKey(TaskRepository repository, String id); public abstract AbstractRepositorySettingsPage getSettingsPage(); @@ -120,17 +122,14 @@ public abstract class AbstractRepositoryConnector { public abstract List<String> getSupportedVersions(); + protected abstract void updateTaskState(AbstractRepositoryTask repositoryTask); + /** * returns all tasks if date is null or an error occurs */ public abstract Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository, Set<AbstractRepositoryTask> tasks) throws Exception; - - protected AbstractRepositoryConnector(AbstractAttributeFactory attributeFactory) { - this.attributeFactory = attributeFactory; - } - /** * Implementors of this repositoryOperations must perform it locally without * going to the server since it is used for frequent repositoryOperations @@ -138,7 +137,7 @@ public abstract class AbstractRepositoryConnector { * * @return an emtpy set if no contexts */ - public Set<RepositoryAttachment> getContextAttachments(TaskRepository repository, AbstractRepositoryTask task) { + public final Set<RepositoryAttachment> getContextAttachments(TaskRepository repository, AbstractRepositoryTask task) { Set<RepositoryAttachment> contextAttachments = new HashSet<RepositoryAttachment>(); if (task.getTaskData() != null) { for (RepositoryAttachment attachment : task.getTaskData().getAttachments()) { @@ -150,7 +149,8 @@ public abstract class AbstractRepositoryConnector { return contextAttachments; } - public boolean hasRepositoryContext(TaskRepository repository, AbstractRepositoryTask task) { + // TODO: move + public final boolean hasRepositoryContext(TaskRepository repository, AbstractRepositoryTask task) { if (repository == null || task == null) { return false; } else { @@ -159,7 +159,7 @@ public abstract class AbstractRepositoryConnector { } } - public void attachContext(TaskRepository repository, AbstractRepositoryTask task, String longComment) + public final void attachContext(TaskRepository repository, AbstractRepositoryTask task, String longComment) throws CoreException { if (!repository.hasCredentials()) { MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), @@ -177,16 +177,15 @@ public abstract class AbstractRepositoryConnector { File destinationFile = File.createTempFile(sourceContextFile.getName(), ZIPFILE_EXTENSION); destinationFile.deleteOnExit(); ZipFileUtil.createZipFile(destinationFile, filesToZip, new NullProgressMonitor()); - - IAttachmentHandler handler = getAttachmentHandler(); + + IAttachmentHandler handler = getAttachmentHandler(); if (handler != null) { handler.uploadAttachment(repository, task, longComment, MYLAR_CONTEXT_DESCRIPTION, destinationFile, APPLICATION_OCTET_STREAM, false, null); synchronize(task, false, null); } else { MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - MylarTaskListPlugin.TITLE_DIALOG, MESSAGE_ATTACHMENTS_NOT_SUPPORTED - + getLabel()); + MylarTaskListPlugin.TITLE_DIALOG, MESSAGE_ATTACHMENTS_NOT_SUPPORTED + getLabel()); } } catch (Exception e) { MylarStatusHandler.fail(e, "Could not export task context as zip file", true); @@ -194,8 +193,8 @@ public abstract class AbstractRepositoryConnector { } } } - - public void retrieveContext(TaskRepository repository, AbstractRepositoryTask task, + + public final void retrieveContext(TaskRepository repository, AbstractRepositoryTask task, RepositoryAttachment attachment) throws CoreException, IOException { boolean wasActive = false; if (task.isActive()) { @@ -210,7 +209,8 @@ public abstract class AbstractRepositoryConnector { Proxy proxySettings = MylarTaskListPlugin.getDefault().getProxySettings(); IAttachmentHandler attachmentHandler = getAttachmentHandler(); if (attachmentHandler != null) { - attachmentHandler.downloadAttachment(repository, task, attachment.getId(), destinationZipFile, proxySettings); + attachmentHandler.downloadAttachment(repository, task, attachment.getId(), destinationZipFile, + proxySettings); ZipFileUtil.unzipFiles(destinationZipFile, MylarPlugin.getDefault().getDataDirectory()); if (destinationContextFile.exists()) { MylarTaskListPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task); @@ -220,16 +220,19 @@ public abstract class AbstractRepositoryConnector { } } else { MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - MylarTaskListPlugin.TITLE_DIALOG, MESSAGE_ATTACHMENTS_NOT_SUPPORTED - + getLabel()); + MylarTaskListPlugin.TITLE_DIALOG, MESSAGE_ATTACHMENTS_NOT_SUPPORTED + getLabel()); } } - + // Precondition of note: offline file is removed upon submit to repository // resulting in a synchronized state. - protected void updateOfflineState(final AbstractRepositoryTask repositoryTask, boolean forceSync) { + void updateOfflineState(final AbstractRepositoryTask repositoryTask, boolean forceSync) { + IOfflineTaskHandler offlineTaskHandler = getOfflineTaskHandler(); + if (offlineTaskHandler == null) { + return; + } RepositoryTaskSyncState status = repositoryTask.getSyncState(); - RepositoryTaskData downloadedTaskData; + RepositoryTaskData downloadedTaskData = null; final TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository( repositoryTask.getRepositoryKind(), repositoryTask.getRepositoryUrl()); @@ -241,7 +244,7 @@ public abstract class AbstractRepositoryConnector { } try { - downloadedTaskData = downloadTaskData(repositoryTask); + downloadedTaskData = offlineTaskHandler.downloadTaskData(repositoryTask); } catch (final CoreException e) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { @@ -320,7 +323,7 @@ public abstract class AbstractRepositoryConnector { * @param listener * can be null */ - public Job synchronize(AbstractRepositoryTask repositoryTask, boolean forceSynch, IJobChangeListener listener) { + public final Job synchronize(AbstractRepositoryTask repositoryTask, boolean forceSynch, IJobChangeListener listener) { Set<AbstractRepositoryTask> toSync = new HashSet<AbstractRepositoryTask>(); toSync.add(repositoryTask); return synchronize(toSync, forceSynch, listener); @@ -330,7 +333,7 @@ public abstract class AbstractRepositoryConnector { * @param listener * can be null */ - public Job synchronize(Set<AbstractRepositoryTask> repositoryTasks, boolean forceSynch, IJobChangeListener listener) { + private Job synchronize(Set<AbstractRepositoryTask> repositoryTasks, boolean forceSynch, IJobChangeListener listener) { final SynchronizeTaskJob synchronizeJob = new SynchronizeTaskJob(this, repositoryTasks); synchronizeJob.setForceSynch(forceSynch); @@ -356,13 +359,13 @@ public abstract class AbstractRepositoryConnector { * For synchronizing a single query. Use synchronize(Set, * IJobChangeListener) if synchronizing multiple queries at a time. */ - public Job synchronize(final AbstractRepositoryQuery repositoryQuery, IJobChangeListener listener) { + public final Job synchronize(final AbstractRepositoryQuery repositoryQuery, IJobChangeListener listener) { HashSet<AbstractRepositoryQuery> items = new HashSet<AbstractRepositoryQuery>(); items.add(repositoryQuery); return synchronize(items, listener, Job.LONG, 0, true); } - public Job synchronize(final Set<AbstractRepositoryQuery> repositoryQueries, IJobChangeListener listener, + public final Job synchronize(final Set<AbstractRepositoryQuery> repositoryQueries, IJobChangeListener listener, int priority, long delay, boolean syncTasks) { SynchronizeQueryJob job = new SynchronizeQueryJob(this, repositoryQueries); job.setSynchTasks(syncTasks); @@ -379,7 +382,7 @@ public abstract class AbstractRepositoryConnector { * given repository was synchronized. Calls to this method set * TaskRepository.syncTime to now. */ - public void synchronizeChanged(final TaskRepository repository) { + public final void synchronizeChanged(final TaskRepository repository) { TaskList taskList = MylarTaskListPlugin.getTaskListManager().getTaskList(); Set<AbstractRepositoryTask> repositoryTasks = Collections.unmodifiableSet(taskList .getRepositoryTasks(repository.getUrl())); @@ -414,99 +417,46 @@ public abstract class AbstractRepositoryConnector { } } - refreshTasks(tasksToSync, false); + synchronize(tasksToSync, false, null); MylarTaskListPlugin.getRepositoryManager().setSyncTime(repository, new Date()); - // } catch (GeneralSecurityException e) { - // PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - // public void run() { - // MessageDialog.openError(Display.getDefault().getActiveShell(), - // MylarTaskListPlugin.TITLE_DIALOG, - // "Authentication error. Check setting in " + TaskRepositoriesView.NAME - // + "."); - // } - // }); - // } catch (final IOException e) { - // PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - // public void run() { - // MessageDialog.openError(Display.getDefault().getActiveShell(), - // MylarTaskListPlugin.TITLE_DIALOG, - // "Communication error during query synchronization. Error - // reported:\n\n" + e.getMessage()); - // } - // }); - // } - } - - /** - * refresh the given tasks with latest content from repository - * - * @param tasks - - * to synchronize - * @param force - - * if true will overwrite local changes and incoming status - */ - public void refreshTasks(Set<AbstractRepositoryTask> tasks, boolean force) { - synchronize(tasks, force, null); } /** * Force the given task to be refreshed from the repository */ - public void forceRefresh(AbstractRepositoryTask task) { + public final void forceRefresh(AbstractRepositoryTask task) { Set<AbstractRepositoryTask> toRefresh = new HashSet<AbstractRepositoryTask>(); toRefresh.add(task); - refreshTasks(toRefresh, true); + synchronize(toRefresh, true, null); } /** * For testing */ - public void setForceSyncExec(boolean forceSyncExec) { + public final void setForceSyncExec(boolean forceSyncExec) { this.forceSyncExecForTesting = forceSyncExec; } - public void openRemoteTask(String repositoryUrl, String idString) { - MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - MylarTaskListPlugin.TITLE_DIALOG, "Opening JIRA issues not added to task list is not implemented."); - } - - public AbstractAttributeFactory getAttributeFactory() { - return attributeFactory; + protected final void removeOfflineTaskData(RepositoryTaskData bug) { + if (bug == null) + return; + // bug.setOfflineState(false); + // offlineStatusChange(bug, RepositoryTaskSyncState.SYNCHRONIZED); + ArrayList<RepositoryTaskData> bugList = new ArrayList<RepositoryTaskData>(); + bugList.add(bug); + MylarTaskListPlugin.getDefault().getOfflineReportsFile().remove(bugList); } - public void saveOffline(RepositoryTaskData taskData) { + public final void saveOffline(RepositoryTaskData taskData) { try { MylarTaskListPlugin.getDefault().getOfflineReportsFile().add(taskData); } catch (CoreException e) { MylarStatusHandler.fail(e, e.getMessage(), false); } - - // if (report.isSavedOffline()) { - // // There is already an offline report for this bug, update the file. - // MylarTaskListPlugin.getDefault().getOfflineReportsFile().update(); - // } else { - // try { - // RepositoryTaskSyncState offlineStatus = - // MylarTaskListPlugin.getDefault().getOfflineReportsFile().add( - // report, forceSynch); - // report.setOfflineState(true); - // offlineStatusChange(report, offlineStatus); - // - // } catch (CoreException e) { - // MylarStatusHandler.fail(e, e.getMessage(), false); - // } - // } - } - protected void removeOfflineTaskData(RepositoryTaskData bug) { - if (bug == null) - return; - // bug.setOfflineState(false); - // offlineStatusChange(bug, RepositoryTaskSyncState.SYNCHRONIZED); - ArrayList<RepositoryTaskData> bugList = new ArrayList<RepositoryTaskData>(); - bugList.add(bug); - MylarTaskListPlugin.getDefault().getOfflineReportsFile().remove(bugList); + public void openRemoteTask(String repositoryUrl, String idString) { + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + MylarTaskListPlugin.TITLE_DIALOG, "Not supported by connector: " + getLabel()); } - } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/IOfflineTaskHandler.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/IOfflineTaskHandler.java index 9f3543f18..5ef9b86d9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/IOfflineTaskHandler.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/IOfflineTaskHandler.java @@ -11,10 +11,18 @@ package org.eclipse.mylar.provisional.tasklist; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; + /** * @author Mik Kersten * @author Rob Elves */ public interface IOfflineTaskHandler { - + + public AbstractAttributeFactory getAttributeFactory(); + + public RepositoryTaskData downloadTaskData(AbstractRepositoryTask repositoryTask) throws CoreException; + } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/SynchronizeTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/SynchronizeTaskJob.java index e4e2b90cf..ea5698ba9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/SynchronizeTaskJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/SynchronizeTaskJob.java @@ -75,7 +75,10 @@ class SynchronizeTaskJob extends Job { monitor.setTaskName(LABEL_SYNCHRONIZING+repositoryTask.getDescription()); repositoryTask.setCurrentlyDownloading(true); MylarTaskListPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask); + this.connector.updateOfflineState(repositoryTask, forceSync); + this.connector.updateTaskState(repositoryTask); + repositoryTask.setCurrentlyDownloading(false); MylarTaskListPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask); } |