diff options
author | spingel | 2008-10-29 05:10:02 +0000 |
---|---|---|
committer | spingel | 2008-10-29 05:10:02 +0000 |
commit | 06ef37661a9984d7e81cb0fc923e2fb0d736b59a (patch) | |
tree | 437386db649efb2b5ef3201809776048d41fd6d4 /org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox | |
parent | 7bb4e0fced0d80d64ab581c8eb6308fc34d165f6 (diff) | |
download | org.eclipse.mylyn.incubator-06ef37661a9984d7e81cb0fc923e2fb0d736b59a.tar.gz org.eclipse.mylyn.incubator-06ef37661a9984d7e81cb0fc923e2fb0d736b59a.tar.xz org.eclipse.mylyn.incubator-06ef37661a9984d7e81cb0fc923e2fb0d736b59a.zip |
NEW - bug 214195: task repository linking for Eclipse.org projects via Bundle-Vendor or provider specification
https://bugs.eclipse.org/bugs/show_bug.cgi?id=214195
Diffstat (limited to 'org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox')
-rw-r--r-- | org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/EclipseTaskRepositoryLinkProvider.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/EclipseTaskRepositoryLinkProvider.java b/org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/EclipseTaskRepositoryLinkProvider.java new file mode 100644 index 00000000..d75ffcf7 --- /dev/null +++ b/org.eclipse.mylyn.sandbox.ui/src/org/eclipse/mylyn/internal/sandbox/ui/EclipseTaskRepositoryLinkProvider.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2004, 2008 Eugene Kuleshov 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: + * Eugene Kuleshov - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.sandbox.ui; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; +import org.eclipse.mylyn.tasks.core.IRepositoryManager; +import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.ui.AbstractTaskRepositoryLinkProvider; +import org.eclipse.pde.core.IModel; +import org.eclipse.pde.core.plugin.IPluginModelBase; +import org.eclipse.pde.core.plugin.PluginRegistry; +import org.eclipse.pde.internal.core.PDECore; +import org.eclipse.pde.internal.core.ifeature.IFeatureModel; +import org.eclipse.pde.internal.core.natures.PDE; + +/** + * Task repository link provider for Eclipse.org PDE projects + * + * @author Eugene Kuleshov + */ +// TODO could use extension point to declare mapping for 3rd party plugin providers +public class EclipseTaskRepositoryLinkProvider extends AbstractTaskRepositoryLinkProvider { + + @Override + public TaskRepository getTaskRepository(IResource resource, IRepositoryManager repositoryManager) { + IProject project = resource.getProject(); + if (PDE.hasPluginNature(project)) { + IPluginModelBase pluginModel = PluginRegistry.findModel(project); + if (pluginModel != null) { + String providerName = pluginModel.getPluginBase().getProviderName(); + return getTaskRepository(providerName, pluginModel, repositoryManager); + } + } else if (PDE.hasFeatureNature(project)) { + IFeatureModel featureModel = PDECore.getDefault().getFeatureModelManager().getFeatureModel(project); + if (featureModel != null) { + String providerName = featureModel.getFeature().getProviderName(); + return getTaskRepository(providerName, featureModel, repositoryManager); + } + } else if (PDE.hasUpdateSiteNature(project)) { + // TODO could use referenced features to lookup task repository + } + return null; + } + + private TaskRepository getTaskRepository(String providerName, IModel model, IRepositoryManager repositoryManager) { + if (providerName.startsWith("%")) { + providerName = model.getResourceString(providerName); + } + if ("Eclipse.org".equals(providerName)) { + return repositoryManager.getRepository(BugzillaCorePlugin.CONNECTOR_KIND, "https://bugs.eclipse.org/bugs"); + } + return null; + } + +} |