diff options
author | Steffen Pingel | 2011-12-17 16:43:22 +0000 |
---|---|---|
committer | Steffen Pingel | 2011-12-17 16:43:22 +0000 |
commit | 7dab95a29c27ee8fed7310499b1788083eb0959c (patch) | |
tree | bc42df8898b7385a3f6464bb2c9da3b5602a7b17 /org.eclipse.mylyn.tasks.ui | |
parent | efda05db19a897facb38d6b55361f3a63536175b (diff) | |
download | org.eclipse.mylyn.tasks-7dab95a29c27ee8fed7310499b1788083eb0959c.tar.gz org.eclipse.mylyn.tasks-7dab95a29c27ee8fed7310499b1788083eb0959c.tar.xz org.eclipse.mylyn.tasks-7dab95a29c27ee8fed7310499b1788083eb0959c.zip |
NEW - bug 367003: expose identity model as OSGi service
https://bugs.eclipse.org/bugs/show_bug.cgi?id=367003
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
2 files changed, 29 insertions, 18 deletions
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 1fe3eda53..2559828b3 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 @@ -51,6 +51,7 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.mylyn.commons.core.StatusHandler; +import org.eclipse.mylyn.commons.identity.core.IIdentityService; import org.eclipse.mylyn.commons.net.WebUtil; import org.eclipse.mylyn.commons.notifications.core.NotificationEnvironment; import org.eclipse.mylyn.commons.notifications.feed.ServiceMessageManager; @@ -58,8 +59,6 @@ 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; -import org.eclipse.mylyn.internal.commons.identity.core.IdentityModel; -import org.eclipse.mylyn.internal.commons.identity.core.gravatar.GravatarConnector; import org.eclipse.mylyn.internal.discovery.ui.DiscoveryUi; import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractSearchHandler; @@ -116,6 +115,7 @@ import org.eclipse.ui.progress.IProgressService; import org.eclipse.ui.progress.UIJob; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; +import org.osgi.util.tracker.ServiceTracker; /** * Main entry point for the Tasks UI. @@ -774,6 +774,10 @@ public class TasksUiPlugin extends AbstractUIPlugin { } context.ungetService(proxyServiceReference); } + if (identityServiceTracker != null) { + identityServiceTracker.close(); + identityServiceTracker = null; + } if (PlatformUI.isWorkbenchRunning()) { getPreferenceStore().removePropertyChangeListener(taskListNotificationManager); @@ -1004,7 +1008,9 @@ public class TasksUiPlugin extends AbstractUIPlugin { private final Map<String, List<IDynamicSubMenuContributor>> menuContributors = new HashMap<String, List<IDynamicSubMenuContributor>>(); - private IdentityModel identityModel; + private IIdentityService identityService; + + private ServiceTracker identityServiceTracker; public Map<String, List<IDynamicSubMenuContributor>> getDynamicMenuMap() { return menuContributors; @@ -1384,12 +1390,13 @@ public class TasksUiPlugin extends AbstractUIPlugin { return synchronizationManger; } - public IdentityModel getIdentityModel() { - if (identityModel == null) { - identityModel = new IdentityModel(new File(getDataDirectory(), "cache")); //$NON-NLS-1$ - identityModel.addConnector(new GravatarConnector()); + public IIdentityService getIdentityService() { + if (identityServiceTracker == null) { + identityServiceTracker = new ServiceTracker(getBundle().getBundleContext(), + IIdentityService.class.getName(), null); + identityServiceTracker.open(); } - return identityModel; + return (IIdentityService) identityServiceTracker.getService(); } public static synchronized AbstractTaskContextStore getContextStore() { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/UserAttributeEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/UserAttributeEditor.java index 26ebdaa71..3d598a6dc 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/UserAttributeEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/UserAttributeEditor.java @@ -19,6 +19,7 @@ import java.util.concurrent.TimeUnit; import org.eclipse.mylyn.commons.identity.core.Account; import org.eclipse.mylyn.commons.identity.core.IIdentity; +import org.eclipse.mylyn.commons.identity.core.IIdentityService; import org.eclipse.mylyn.commons.identity.core.IProfileImage; import org.eclipse.mylyn.commons.identity.core.spi.ProfileImage; import org.eclipse.mylyn.commons.ui.CommonImages; @@ -140,18 +141,21 @@ public class UserAttributeEditor extends AbstractAttributeEditor { label.setToolTipText(getDescription()); } Account account = TasksUiInternal.getAccount(getTaskAttribute()); - identity = TasksUiPlugin.getDefault().getIdentityModel().getIdentity(account); - identity.addPropertyChangeListener(imageListener); - Future<IProfileImage> result = identity.requestImage(IMAGE_SIZE, IMAGE_SIZE); - if (result.isDone()) { - try { - updateImage(result.get(0, TimeUnit.SECONDS)); - } catch (Exception e) { - // the event listener will eventually update the image + IIdentityService identityService = TasksUiPlugin.getDefault().getIdentityService(); + if (identityService != null) { + identity = identityService.getIdentity(account); + identity.addPropertyChangeListener(imageListener); + Future<IProfileImage> result = identity.requestImage(IMAGE_SIZE, IMAGE_SIZE); + if (result.isDone()) { + try { + updateImage(result.get(0, TimeUnit.SECONDS)); + } catch (Exception e) { + // the event listener will eventually update the image + updateImage(null); + } + } else { updateImage(null); } - } else { - updateImage(null); } } |