### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java,v retrieving revision 1.1 diff -u -r1.1 TaskListServiceMessageControl.java --- src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java 25 May 2010 20:03:24 -0000 1.1 +++ src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java 25 May 2010 20:59:21 -0000 @@ -11,6 +11,8 @@ package org.eclipse.mylyn.internal.tasks.ui.notifications; +import java.util.Date; + import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; @@ -214,7 +216,9 @@ switch (event.getEventKind()) { case MESSAGE_UPDATE: IPreferenceStore preferenceStore = TasksUiPlugin.getDefault().getPreferenceStore(); + preferenceStore.setValue(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_CHECKTIME, new Date().getTime()); String lastMessageId = preferenceStore.getString(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_ID); + for (final ServiceMessage message : event.getMessages()) { if (!message.isValid() || message.getId().equals("-1")) { //$NON-NLS-1$ continue; Index: src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java,v retrieving revision 1.14 diff -u -r1.14 ITasksUiPreferenceConstants.java --- src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java 25 May 2010 20:03:24 -0000 1.14 +++ src/org/eclipse/mylyn/internal/tasks/ui/ITasksUiPreferenceConstants.java 25 May 2010 20:59:20 -0000 @@ -91,7 +91,7 @@ public static final String DEFAULT_ATTACHMENTS_DIRECTORY = "org.eclipse.mylyn.tasks.ui.attachments.defaultDirectory"; //$NON-NLS-1$ public static final String PREFERRED_TASK_ATTACHMENT_VIEWER_ID = "org.eclipse.mylyn.tasks.ui.attachments.preferredViewerID"; //$NON-NLS-1$ - + public static final String SERVICE_MESSAGE_URL = "org.eclipse.mylyn.tasks.ui.servicemessage.url"; //$NON-NLS-1$; public static final String LAST_SERVICE_MESSAGE_ID = "org.eclipse.mylyn.tasks.ui.servicemessage.id"; //$NON-NLS-1$ @@ -99,4 +99,6 @@ public static final String LAST_SERVICE_MESSAGE_ETAG = "org.eclipse.mylyn.tasks.ui.servicemessage.etag"; //$NON-NLS-1$ public static final String LAST_SERVICE_MESSAGE_LAST_MODIFIED = "org.eclipse.mylyn.tasks.ui.servicemessage.lastmodified"; //$NON-NLS-1$ + + public static final String LAST_SERVICE_MESSAGE_CHECKTIME = "org.eclipse.mylyn.tasks.ui.servicemessage.checktime"; //$NON-NLS-1$ } Index: src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java,v retrieving revision 1.132 diff -u -r1.132 TasksUiPlugin.java --- src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java 25 May 2010 20:03:24 -0000 1.132 +++ src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java 25 May 2010 20:59:21 -0000 @@ -619,9 +619,11 @@ String lastMod = getPreferenceStore().getString( ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_LAST_MODIFIED); String etag = getPreferenceStore().getString(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_ETAG); + String serviceMessageUrl = getPreferenceStore().getString(ITasksUiPreferenceConstants.SERVICE_MESSAGE_URL); - serviceMessageManager = new ServiceMessageManager(getPreferenceStore().getString( - ITasksUiPreferenceConstants.SERVICE_MESSAGE_URL), lastMod, etag); + Long checktime = getPreferenceStore().getLong(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_CHECKTIME); + + serviceMessageManager = new ServiceMessageManager(serviceMessageUrl, lastMod, etag, checktime); if (getPreferenceStore().getBoolean(ITasksUiPreferenceConstants.SERVICE_MESSAGES_ENABLED)) { serviceMessageManager.start(); Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java,v retrieving revision 1.339 diff -u -r1.339 TaskListView.java --- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java 25 May 2010 20:03:24 -0000 1.339 +++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java 25 May 2010 20:59:21 -0000 @@ -64,9 +64,7 @@ import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessageEvent; import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessageManager; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessageEvent.EVENT_KIND; import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; import org.eclipse.mylyn.internal.tasks.ui.CategorizedPresentation; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; @@ -942,8 +940,6 @@ serviceMessageControl = new TaskListServiceMessageControl(body); ServiceMessageManager manager = TasksUiPlugin.getDefault().getServiceMessageManager(); - serviceMessageControl.handleEvent(new ServiceMessageEvent(manager, EVENT_KIND.MESSAGE_UPDATE, - manager.getServiceMessages())); TasksUiPlugin.getDefault().getServiceMessageManager().addServiceMessageListener(serviceMessageControl); // Need to do this because the page, which holds the active working set is not around on creation, see bug 203179 #P org.eclipse.mylyn.tasks.core Index: src/org/eclipse/mylyn/internal/tasks/core/notifications/ServiceMessageManager.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/notifications/ServiceMessageManager.java,v retrieving revision 1.2 diff -u -r1.2 ServiceMessageManager.java --- src/org/eclipse/mylyn/internal/tasks/core/notifications/ServiceMessageManager.java 25 May 2010 20:12:08 -0000 1.2 +++ src/org/eclipse/mylyn/internal/tasks/core/notifications/ServiceMessageManager.java 25 May 2010 20:59:22 -0000 @@ -11,6 +11,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -60,9 +61,12 @@ private boolean statusLogged; - public ServiceMessageManager(String serviceMessageUrl, String lastModified, String eTag) { + private final long checktime; + + public ServiceMessageManager(String serviceMessageUrl, String lastModified, String eTag, long checktime) { this.serviceMessageUrl = serviceMessageUrl; this.lastModified = lastModified; + this.checktime = checktime; this.eTag = eTag; } @@ -87,7 +91,22 @@ } }); } - messageCheckJob.schedule(START_DELAY); + if (checktime == 0) { + messageCheckJob.schedule(START_DELAY); + } else { + long nextCheckTime = checktime + RECHECK_DELAY; + long now = new Date().getTime(); + if (nextCheckTime < now) { + messageCheckJob.schedule(START_DELAY); + } else if (nextCheckTime > now) { + if ((nextCheckTime - now) < START_DELAY) { + messageCheckJob.schedule(START_DELAY); + } else { + messageCheckJob.schedule(nextCheckTime - now); + } + } + } + } public void stop() {