Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaxsun McCarthy Huggan2016-06-02 22:52:31 +0000
committerJaxsun McCarthy Huggan2016-06-02 22:52:31 +0000
commit923d661b26e60c4b72261df798a9632e2c5e0e78 (patch)
tree333c507ff90fdcd3f1e4616eade2862cea433859
parent7ebe840367437541244ec57906d28629c4db9c1d (diff)
downloadorg.eclipse.mylyn.tasks-923d661b26e60c4b72261df798a9632e2c5e0e78.tar.gz
org.eclipse.mylyn.tasks-923d661b26e60c4b72261df798a9632e2c5e0e78.tar.xz
org.eclipse.mylyn.tasks-923d661b26e60c4b72261df798a9632e2c5e0e78.zip
494596: Fix issues with TaskListToolTip and TaskListNotifier
* TaskListToolTip now retrieves the incoming text from the ITask * TaskListNotifier now records incoming text for manual task synchronizations * TaskListNotifier delays notifications until a proper diff can be computed Change-Id: I30ba21255d309832422e6f929a4af9e83ffcd4ea Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=494596
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotifier.java47
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTip.java2
2 files changed, 31 insertions, 18 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotifier.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotifier.java
index d90e08cea..a33b1ee97 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotifier.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotifier.java
@@ -28,6 +28,7 @@ import org.eclipse.mylyn.internal.tasks.core.data.SynchronizationManger;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataDiff;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManagerEvent;
+import org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeTasksJob;
import org.eclipse.mylyn.internal.tasks.ui.ITaskListNotificationProvider;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.views.PresentationFilter;
@@ -93,25 +94,16 @@ public class TaskListNotifier implements ITaskDataManagerListener, ITaskListNoti
@Override
public void taskDataUpdated(TaskDataManagerEvent event) {
- if (event.getToken() != null && event.getTaskDataChanged()) {
- // always compute the incoming message as it may be used outside of the notification
+ // Events from SynchronizeQueryJobs end up with incorrect diffs
+ // Only notify for the subsequent SynchronizeTasksJobs
+ if (event.getTaskChanged() && event.getData() instanceof SynchronizeTasksJob) {
+
+ // Always record the notification text, it may be read outside of the notification
+ // The text does not need a token to be recorded, and manually synchronized tasks will not have an associated token
recordNotificationText(event);
- if (isEnabled()) {
- if (PresentationFilter.getInstance().isInVisibleQuery(event.getTask())) {
- AbstractRepositoryConnectorUi connectorUi = TasksUi
- .getRepositoryConnectorUi(event.getTaskData().getConnectorKind());
- if (!connectorUi.hasCustomNotifications()) {
- TaskListNotification notification = getNotification(event.getTask(), event.getToken());
- if (notification != null) {
- synchronized (notificationQueue) {
- if (enabled) {
- notificationQueue.add(notification);
- }
- }
- }
- }
- }
+ if (shouldDisplayNotification(event)) {
+ queueNotification(event);
}
}
}
@@ -134,6 +126,27 @@ public class TaskListNotifier implements ITaskDataManagerListener, ITaskListNoti
return null;
}
+ private boolean shouldDisplayNotification(TaskDataManagerEvent event) {
+ return event.getToken() != null && isEnabled()
+ && PresentationFilter.getInstance().isInVisibleQuery(event.getTask());
+ }
+
+ private void queueNotification(TaskDataManagerEvent event) {
+ AbstractRepositoryConnectorUi connectorUi = TasksUi
+ .getRepositoryConnectorUi(event.getTaskData().getConnectorKind());
+
+ if (!connectorUi.hasCustomNotifications()) {
+ TaskListNotification notification = getNotification(event.getTask(), event.getToken());
+ if (notification != null) {
+ synchronized (notificationQueue) {
+ if (enabled) {
+ notificationQueue.add(notification);
+ }
+ }
+ }
+ }
+ }
+
public Set<AbstractUiNotification> getNotifications() {
synchronized (notificationQueue) {
if (notificationQueue.isEmpty()) {
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTip.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTip.java
index be1cecf01..f09627bc3 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTip.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTip.java
@@ -322,7 +322,7 @@ public class TaskListToolTip extends GradientToolTip {
if (element instanceof ITask) {
ITask task = (ITask) element;
if (task.getSynchronizationState().isIncoming()) {
- task.getAttribute(TaskListNotifier.KEY_INCOMING_NOTIFICATION_TEXT);
+ text = task.getAttribute(TaskListNotifier.KEY_INCOMING_NOTIFICATION_TEXT);
if (Strings.isNullOrEmpty(text)) {
TaskListNotifier notifier = new TaskListNotifier(TasksUiPlugin.getTaskDataManager(),
TasksUiPlugin.getDefault().getSynchronizationManger());

Back to the top