diff options
author | Michael Valenta | 2006-03-17 16:21:48 +0000 |
---|---|---|
committer | Michael Valenta | 2006-03-17 16:21:48 +0000 |
commit | da06ace7e4fc997c02e21aef2f4f77dcbabbd1f6 (patch) | |
tree | 9e67fb2cd259a54fc9e1c1d47db62a469d3eccaa /bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java | |
parent | a9cc71416ac4a414e77597721763fa89b8b61a87 (diff) | |
download | eclipse.platform.team-da06ace7e4fc997c02e21aef2f4f77dcbabbd1f6.tar.gz eclipse.platform.team-da06ace7e4fc997c02e21aef2f4f77dcbabbd1f6.tar.xz eclipse.platform.team-da06ace7e4fc997c02e21aef2f4f77dcbabbd1f6.zip |
Bug 131440 [Model Decoration] Problems with current support for model element decoration
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java')
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java index 6c60b83ba..ee8c8a297 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java @@ -27,12 +27,18 @@ import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; +import org.eclipse.team.core.RepositoryProviderType; +import org.eclipse.team.core.subscribers.Subscriber; import org.eclipse.team.internal.ui.mapping.StreamMergerDelegate; +import org.eclipse.team.internal.ui.mapping.WorkspaceTeamStateProvider; import org.eclipse.team.internal.ui.synchronize.SynchronizeManager; import org.eclipse.team.internal.ui.synchronize.TeamSynchronizingPerspective; import org.eclipse.team.internal.ui.synchronize.actions.GlobalRefreshAction; import org.eclipse.team.ui.ISharedImages; import org.eclipse.team.ui.TeamUI; +import org.eclipse.team.ui.mapping.ITeamStateProvider; +import org.eclipse.team.ui.synchronize.TeamStateProvider; +import org.eclipse.team.ui.synchronize.SubscriberTeamStateProvider; import org.eclipse.ui.*; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.Bundle; @@ -58,6 +64,10 @@ public class TeamUIPlugin extends AbstractUIPlugin { private Hashtable imageDescriptors = new Hashtable(20); + private WorkspaceTeamStateProvider provider; + + private Map decoratedStateProviders = new HashMap(); + /** * Creates a new TeamUIPlugin. */ @@ -217,6 +227,13 @@ public class TeamUIPlugin extends AbstractUIPlugin { } finally { super.stop(context); } + if (provider != null) { + provider.dispose(); + } + for (Iterator iter = decoratedStateProviders.values().iterator(); iter.hasNext();) { + SubscriberTeamStateProvider sdsp = (SubscriberTeamStateProvider) iter.next(); + sdsp.dispose(); + } } /** @@ -385,4 +402,29 @@ public class TeamUIPlugin extends AbstractUIPlugin { public org.osgi.service.prefs.Preferences getInstancePreferences() { return new InstanceScope().getNode(getBundle().getSymbolicName()); } + + public synchronized TeamStateProvider getDecoratedStateProvider(RepositoryProviderType rpt) { + TeamStateProvider provider = (TeamStateProvider)decoratedStateProviders.get(rpt.getID()); + if (provider != null) + return provider; + Subscriber subscriber = rpt.getSubscriber(); + if (subscriber != null) { + provider = new SubscriberTeamStateProvider(subscriber); + decoratedStateProviders.put(rpt.getID(), provider); + return provider; + } + return null; + } + + /** + * Return a decorated state provider that delegates to the appropriate team + * provider. + * @return a decorated state provider that delegates to the appropriate team + * provider + */ + public synchronized ITeamStateProvider getDecoratedStateProvider() { + if (provider == null) + provider = new WorkspaceTeamStateProvider(); + return provider; + } } |