From 37fc151f7c3bcd975ea83fdc7d02a41a77e7f538 Mon Sep 17 00:00:00 2001 From: Steffen Pingel Date: Mon, 5 Dec 2011 17:34:12 +0100 Subject: NEW - bug 361048: [api] move service message implementation to notifications component https://bugs.eclipse.org/bugs/show_bug.cgi?id=361048 Change-Id: I4f88348bfc60a084a01378931fd8210817fa8d79 --- org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF | 3 ++ .../tasks/ui/ITaskListNotificationProvider.java | 4 +- .../tasks/ui/TaskListNotificationManager.java | 18 ++++----- .../mylyn/internal/tasks/ui/TasksUiPlugin.java | 12 +++--- .../ui/notifications/AbstractNotification.java | 45 ---------------------- .../ui/notifications/TaskListNotification.java | 19 +++++++-- .../notifications/TaskListNotificationPopup.java | 11 +++--- .../TaskListNotificationReminder.java | 4 +- .../tasks/ui/notifications/TaskListNotifier.java | 5 ++- .../TaskListServiceMessageControl.java | 8 ++-- .../internal/tasks/ui/views/TaskListView.java | 4 +- 11 files changed, 54 insertions(+), 79 deletions(-) delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/AbstractNotification.java (limited to 'org.eclipse.mylyn.tasks.ui') diff --git a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF index 3691cefd2..03ae49d2a 100644 --- a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF @@ -23,6 +23,9 @@ Require-Bundle: org.eclipse.ui, org.eclipse.mylyn.commons.repositories;bundle-version="0.1.0", org.eclipse.mylyn.commons.identity;bundle-version="0.8.0", org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)", + org.eclipse.mylyn.commons.notifications.core, + org.eclipse.mylyn.commons.notifications.feed, + org.eclipse.mylyn.commons.notifications.ui, org.eclipse.mylyn.commons.repositories;bundle-version="0.1.0", org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)", org.eclipse.mylyn.commons.workbench;bundle-version="[3.0.0,4.0.0)", diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotificationProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotificationProvider.java index 3f41a9e5b..6b17d2d71 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotificationProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotificationProvider.java @@ -13,13 +13,13 @@ package org.eclipse.mylyn.internal.tasks.ui; import java.util.Set; -import org.eclipse.mylyn.internal.tasks.ui.notifications.AbstractNotification; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; /** * @author Rob Elves */ public interface ITaskListNotificationProvider { - public Set getNotifications(); + public Set getNotifications(); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java index 08d06e77d..9e255696d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java @@ -27,7 +27,7 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.window.Window; -import org.eclipse.mylyn.internal.tasks.ui.notifications.AbstractNotification; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListNotificationPopup; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListNotifier; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; @@ -45,9 +45,9 @@ public class TaskListNotificationManager implements IPropertyChangeListener { private TaskListNotificationPopup popup; - private final Set notifications = new HashSet(); + private final Set notifications = new HashSet(); - private final Set currentlyNotifying = Collections.synchronizedSet(notifications); + private final Set currentlyNotifying = Collections.synchronizedSet(notifications); private final List notificationProviders = new ArrayList(); @@ -67,16 +67,16 @@ public class TaskListNotificationManager implements IPropertyChangeListener { collectNotifications(); if (popup != null && popup.getReturnCode() == Window.CANCEL) { - List notifications = popup.getNotifications(); - for (AbstractNotification notification : notifications) { + List notifications = popup.getNotifications(); + for (AbstractUiNotification notification : notifications) { if (notification.getToken() != null) { cancelledTokens.put(notification.getToken(), null); } } } - for (Iterator it = currentlyNotifying.iterator(); it.hasNext();) { - AbstractNotification notification = it.next(); + for (Iterator it = currentlyNotifying.iterator(); it.hasNext();) { + AbstractUiNotification notification = it.next(); if (notification.getToken() != null && cancelledTokens.containsKey(notification.getToken())) { it.remove(); @@ -120,7 +120,7 @@ public class TaskListNotificationManager implements IPropertyChangeListener { Shell shell = new Shell(PlatformUI.getWorkbench().getDisplay()); popup = new TaskListNotificationPopup(shell); popup.setFadingEnabled(TasksUiInternal.isAnimationsEnabled()); - List toDisplay = new ArrayList(currentlyNotifying); + List toDisplay = new ArrayList(currentlyNotifying); Collections.sort(toDisplay); popup.setContents(toDisplay); cleanNotified(); @@ -186,7 +186,7 @@ public class TaskListNotificationManager implements IPropertyChangeListener { /** * public for testing purposes */ - public Set getNotifications() { + public Set getNotifications() { synchronized (TaskListNotificationManager.class) { return currentlyNotifying; } 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 12e711abe..8278bb284 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 @@ -52,6 +52,9 @@ import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.net.WebUtil; +import org.eclipse.mylyn.commons.notifications.core.NotificationEnvironment; +import org.eclipse.mylyn.commons.notifications.feed.ServiceMessageManager; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; import org.eclipse.mylyn.commons.ui.compatibility.CommonColors; import org.eclipse.mylyn.commons.ui.compatibility.CommonFonts; import org.eclipse.mylyn.commons.workbench.TaskBarManager; @@ -80,11 +83,8 @@ import org.eclipse.mylyn.internal.tasks.core.externalization.ExternalizationMana import org.eclipse.mylyn.internal.tasks.core.externalization.IExternalizationParticipant; import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizationParticipant; import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizer; -import org.eclipse.mylyn.internal.tasks.core.notifications.Environment; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessageManager; import org.eclipse.mylyn.internal.tasks.ui.actions.ActivateTaskDialogAction; import org.eclipse.mylyn.internal.tasks.ui.actions.NewTaskAction; -import org.eclipse.mylyn.internal.tasks.ui.notifications.AbstractNotification; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListNotificationReminder; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListNotifier; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader; @@ -256,9 +256,9 @@ public class TasksUiPlugin extends AbstractUIPlugin { private static ITaskListNotificationProvider REMINDER_NOTIFICATION_PROVIDER = new ITaskListNotificationProvider() { - public Set getNotifications() { + public Set getNotifications() { Collection allTasks = TasksUiPlugin.getTaskList().getAllTasks(); - Set reminders = new HashSet(); + Set reminders = new HashSet(); for (AbstractTask task : allTasks) { if (TasksUiPlugin.getTaskActivityManager().isPastReminder(task) && !task.isReminded()) { reminders.add(new TaskListNotificationReminder(task)); @@ -640,7 +640,7 @@ public class TasksUiPlugin extends AbstractUIPlugin { Long checktime = getPreferenceStore().getLong(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_CHECKTIME); serviceMessageManager = new ServiceMessageManager(serviceMessageUrl, lastMod, etag, checktime, - new Environment() { + new NotificationEnvironment() { private Set installedFeatures; @Override diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/AbstractNotification.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/AbstractNotification.java deleted file mode 100644 index 4997c1410..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/AbstractNotification.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies 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 - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.notifications; - -import java.util.Date; - -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.swt.graphics.Image; - -/** - * @author Rob Elves - * @author Mik Kersten - * @deprecated use {@link org.org.eclipse.mylyn.internal.tasks.ui.notifications.notifications.AbstractNotification} instead - */ -@Deprecated -public abstract class AbstractNotification implements Comparable, IAdaptable { - - public abstract void open(); - - public abstract String getDescription(); - - public abstract String getLabel(); - - public abstract Image getNotificationImage(); - - public abstract Image getNotificationKindImage(); - - public abstract Date getDate(); - - public abstract void setDate(Date date); - - public Object getToken() { - return null; - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotification.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotification.java index e5a0c2a6a..c768ce4e3 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotification.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotification.java @@ -16,6 +16,8 @@ import java.util.Date; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.mylyn.commons.notifications.core.AbstractNotification; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; import org.eclipse.mylyn.commons.ui.CommonImages; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; @@ -29,7 +31,9 @@ import org.eclipse.ui.PlatformUI; * @author Rob Elves * @author Mik Kersten */ -public class TaskListNotification extends AbstractNotification { +public class TaskListNotification extends AbstractUiNotification { + + private final static String ID_EVENT_TASK_CHANGED = "org.eclipse.mylyn.tasks.ui.events.TaskChanged"; private static DecoratingLabelProvider labelProvider; @@ -42,10 +46,19 @@ public class TaskListNotification extends AbstractNotification { private final Object token; public TaskListNotification(ITask task) { - this(task, null); + this(ID_EVENT_TASK_CHANGED, task, null); + } + + public TaskListNotification(String eventId, ITask task) { + this(eventId, task, null); } public TaskListNotification(ITask task, Object token) { + this(ID_EVENT_TASK_CHANGED, task, token); + } + + public TaskListNotification(String eventId, ITask task, Object token) { + super(eventId); Assert.isNotNull(task); this.task = task; this.token = token; @@ -109,11 +122,11 @@ public class TaskListNotification extends AbstractNotification { return date; } - @Override public void setDate(Date date) { this.date = date; } + @Override public int compareTo(AbstractNotification anotherNotification) throws ClassCastException { Date anotherDate = anotherNotification.getDate(); if (date != null && anotherDate != null) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationPopup.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationPopup.java index 54dbca419..71961901b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationPopup.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationPopup.java @@ -16,6 +16,7 @@ import java.util.List; import org.eclipse.jface.action.LegacyActionTools; import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; import org.eclipse.mylyn.commons.workbench.AbstractWorkbenchNotificationPopup; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.ui.TaskScalingHyperlink; @@ -46,18 +47,18 @@ public class TaskListNotificationPopup extends AbstractWorkbenchNotificationPopu private static final int NUM_NOTIFICATIONS_TO_DISPLAY = 4; - private List notifications; + private List notifications; public TaskListNotificationPopup(Shell parent) { super(parent.getDisplay()); } - public void setContents(List notifications) { + public void setContents(List notifications) { this.notifications = notifications; } - public List getNotifications() { - return new ArrayList(notifications); + public List getNotifications() { + return new ArrayList(notifications); } @Override @@ -74,7 +75,7 @@ public class TaskListNotificationPopup extends AbstractWorkbenchNotificationPopu @Override protected void createContentArea(Composite parent) { int count = 0; - for (final AbstractNotification notification : notifications) { + for (final AbstractUiNotification notification : notifications) { Composite notificationComposite = new Composite(parent, SWT.NO_FOCUS); GridLayout gridLayout = new GridLayout(2, false); GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.TOP).applyTo(notificationComposite); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationReminder.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationReminder.java index da75f3ac0..7624adbdb 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationReminder.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListNotificationReminder.java @@ -21,8 +21,10 @@ import org.eclipse.swt.graphics.Image; */ public class TaskListNotificationReminder extends TaskListNotification { + private final static String ID_EVENT_TASK_DUE = "org.eclipse.mylyn.tasks.ui.events.TaskDue"; + public TaskListNotificationReminder(AbstractTask task) { - super(task); + super(ID_EVENT_TASK_DUE, task); } @Override 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 19a88bd72..3ee82ea33 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 @@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.mylyn.commons.core.StatusHandler; +import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification; import org.eclipse.mylyn.internal.tasks.core.RepositoryModel; import org.eclipse.mylyn.internal.tasks.core.data.ITaskDataManagerListener; import org.eclipse.mylyn.internal.tasks.core.data.SynchronizationManger; @@ -116,12 +117,12 @@ public class TaskListNotifier implements ITaskDataManagerListener, ITaskListNoti } } - public Set getNotifications() { + public Set getNotifications() { synchronized (notificationQueue) { if (notificationQueue.isEmpty()) { return Collections.emptySet(); } - HashSet result = new HashSet(notificationQueue); + HashSet result = new HashSet(notificationQueue); notificationQueue.clear(); return result; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java index 960d3a310..71992b9ef 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/notifications/TaskListServiceMessageControl.java @@ -23,11 +23,11 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.mylyn.commons.workbench.forms.NotificationControl; +import org.eclipse.mylyn.commons.notifications.feed.IServiceMessageListener; +import org.eclipse.mylyn.commons.notifications.feed.ServiceMessageEvent; +import org.eclipse.mylyn.commons.notifications.ui.NotificationControl; +import org.eclipse.mylyn.internal.commons.notifications.feed.ServiceMessage; import org.eclipse.mylyn.internal.tasks.core.LocalTask; -import org.eclipse.mylyn.internal.tasks.core.notifications.IServiceMessageListener; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessage; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessageEvent; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.actions.AddRepositoryAction; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java index 06c672bec..9f19810b2 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java @@ -64,6 +64,7 @@ import org.eclipse.mylyn.commons.ui.PlatformUiUtil; import org.eclipse.mylyn.commons.ui.compatibility.CommonThemes; import org.eclipse.mylyn.commons.workbench.DelayedRefreshJob; import org.eclipse.mylyn.commons.workbench.GradientDrawer; +import org.eclipse.mylyn.internal.commons.notifications.feed.ServiceMessage; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; @@ -72,7 +73,6 @@ import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; import org.eclipse.mylyn.internal.tasks.core.UncategorizedTaskContainer; import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; import org.eclipse.mylyn.internal.tasks.core.UnsubmittedTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.notifications.ServiceMessage; import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; import org.eclipse.mylyn.internal.tasks.ui.CategorizedPresentation; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; @@ -1015,7 +1015,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I .getString(ITasksUiPreferenceConstants.LAST_SERVICE_MESSAGE_ID); if (showMessage && lastClosedId.equals("")) { //$NON-NLS-1$ - ServiceMessage message = new ServiceMessage(); + ServiceMessage message = new ServiceMessage("welcome"); message.setDescription(Messages.TaskListView_Welcome_Message); message.setTitle(Messages.TaskListView_Welcome_Message_Title); message.setImage(Dialog.DLG_IMG_MESSAGE_INFO); -- cgit v1.2.3